userServiceClient->getTypeUserList(['type_id' => 10000]); // 获取 Swoole WebSocket Server 实例 $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class); $redisClient = new RedisService(); if ($adminList && isset($adminList['data'])) { foreach ($adminList['data'] as $admin) { $fd = $redisClient->findFd((int)$admin['id']); if ($fd && $server->isEstablished((int)$fd)) { $server->push((int)$fd, json_encode($data)); } } } return true; } catch (\Throwable $e) { var_dump('发送消息错误: ' . $e->getMessage()); return false; } } public function sendUserMessage($data){ try { // 获取 Swoole WebSocket Server 实例 $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class); $redisClient = new RedisService(); $fd = $redisClient->findFd((int)$data['user_id']); if ($fd && $server->isEstablished((int)$fd)) { $server->push((int)$fd, json_encode($data)); } } catch (\Throwable $e) { var_dump('发送消息错误: ' . $e->getMessage()); return false; } } public function sendOtherUserMessage($data){ try { // 获取 Swoole WebSocket Server 实例 $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class); $redisClient = new RedisService(); $data['user_id'] = json_decode($data['user_id'],true); if(is_array($data['user_id'])){ foreach($data['user_id'] as $user_id){ $fd = $redisClient->findFd((int)$user_id); if ($fd && $server->isEstablished((int)$fd)) { $server->push((int)$fd, json_encode($data)); } } } } catch (\Throwable $e) { var_dump('发送消息错误: ' . $e->getMessage()); return false; } } /** * 单聊 */ public function sendSingleChat($data){ $userInfo = $this->userServiceClient->getImContact([ 'user_id' => $data['receiver_id'], 'friend_id' => $data['user_id'], ]); // var_dump("用户信息:",$userInfo); $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class); $redisClient = new RedisService(); $message = [ 'talk_type' => 1, 'title' => $userInfo['data']['remark'], 'content' => $data['content'], 'messageType' => 1, 'receiver_id'=> $data['user_id'], // 'user_id' => $user['user_id'] ?? '', 'time' => microtime(), ]; $fd = $redisClient->findFd((int)$data['receiver_id']); if ($fd && $server->isEstablished((int)$fd)) { $server->push((int)$fd, json_encode($message)); } return true; } /** * 群聊 */ public function sendGroupChat($data){ $userList = $this->userServiceClient->getImGroupMember(['user_id' => $data['user_id'],'group_id' => $data['receiver_id']]); // 获取 Swoole WebSocket Server 实例 $server = \Hyperf\Context\ApplicationContext::getContainer()->get(\Swoole\Server::class); $redisClient = new RedisService(); if($userList && isset($userList['data'])){ foreach($userList['data'] as $user){ $message = [ 'talk_type' => 2, 'title' => $user['group_name'], 'content' => $data['content'], 'messageType' => 1, 'receiver_id'=> $data['receiver_id'], // 'user_id' => $user['user_id'] ?? '', 'time' => microtime(), ]; $fd = $redisClient->findFd((int)$user['user_id']); if ($fd && $server->isEstablished((int)$fd)) { $server->push((int)$fd, json_encode($message)); } } } } }