1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- declare(strict_types=1);
- namespace App\Controller;
- /**
- * MessageController
- * @package App\Controller
- */
- use App\JsonRpc\UserServiceInterface;
- use Hyperf\Di\Annotation\Inject;
- use Hyperf\Context\ApplicationContext;
- use Swoole\WebSocket\Server as WebSocketServer;
- use App\Service\RedisService;
- use Hyperf\Server\ServerManager;
- use function Hyperf\Support\call;
- use swoole\Server;
- class MessageController extends AbstractController
- {
- /**
- * @var UserServiceInterface
- */
- #[Inject]
- private $userServiceClient;
- public function sendAdminMessage($data)
- {
- try {
- // 获取管理员列表
- $adminList = $this->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;
- }
- }
- }
|