MessageController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. /**
  5. * MessageController
  6. * @package App\Controller
  7. */
  8. use App\JsonRpc\UserServiceInterface;
  9. use Hyperf\Di\Annotation\Inject;
  10. use Hyperf\Context\ApplicationContext;
  11. use Swoole\WebSocket\Server as WebSocketServer;
  12. use App\Service\RedisService;
  13. use Hyperf\Server\ServerManager;
  14. use function Hyperf\Support\call;
  15. use swoole\Server;
  16. class MessageController extends AbstractController
  17. {
  18. /**
  19. * @var UserServiceInterface
  20. */
  21. #[Inject]
  22. private $userServiceClient;
  23. public function sendAdminMessage($data)
  24. {
  25. try {
  26. // 获取管理员列表
  27. $adminList = $this->userServiceClient->getTypeUserList(['type_id' => 10000]);
  28. // 获取 Swoole WebSocket Server 实例
  29. $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class);
  30. $redisClient = new RedisService();
  31. var_dump($adminList, '-------------&&&&&&&&&&&&&&&&&&&&&&----');
  32. if ($adminList && isset($adminList['data'])) {
  33. foreach ($adminList['data'] as $admin) {
  34. $fd = $redisClient->findFd((int)$admin['id']);
  35. if ($fd && $server->isEstablished((int)$fd)) {
  36. var_dump($fd, '-------------&&&&&&&&&&&&&&&&&&&&&&----');
  37. $server->push((int)$fd, json_encode($data));
  38. }
  39. }
  40. }
  41. return true;
  42. } catch (\Throwable $e) {
  43. var_dump('发送消息错误: ' . $e->getMessage());
  44. return false;
  45. }
  46. }
  47. public function sendUserMessage($data){
  48. try {
  49. // 获取 Swoole WebSocket Server 实例
  50. $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class);
  51. $redisClient = new RedisService();
  52. $fd = $redisClient->findFd((int)$data['user_id']);
  53. if ($fd && $server->isEstablished((int)$fd)) {
  54. $server->push((int)$fd, json_encode($data));
  55. }
  56. } catch (\Throwable $e) {
  57. var_dump('发送消息错误: ' . $e->getMessage());
  58. return false;
  59. }
  60. }
  61. public function sendOtherUserMessage($data){
  62. try {
  63. // 获取 Swoole WebSocket Server 实例
  64. $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class);
  65. $redisClient = new RedisService();
  66. $data['user_id'] = json_decode($data['user_id'],true);
  67. // var_dump($data['user_id'],"====================%%%%%%%%%%%====");
  68. if(is_array($data['user_id'])){
  69. foreach($data['user_id'] as $user_id){
  70. $fd = $redisClient->findFd((int)$user_id);
  71. if ($fd && $server->isEstablished((int)$fd)) {
  72. $server->push((int)$fd, json_encode($data));
  73. }
  74. }
  75. }
  76. } catch (\Throwable $e) {
  77. var_dump('发送消息错误: ' . $e->getMessage());
  78. return false;
  79. }
  80. }
  81. }