Как использовать websocket в php для отправки сообщения конкретному пользователю?

Использую библиотеку Ratchet и с помощью её отлично получается подключится к серверу и отправлять сообщения, но только тогда, когда пользователь сделал запрос. Для того чтобы сервер отправил сообщение когда серверу это нужно Ratchet использует ZMQ и WAMP. Но в документации Ratchet сообщается как использовать PubSub(подписка на темы), а о RPC ни слова.
Как отправить сообщение конкретному пользователю без подписок?
  • Вопрос задан
  • 4530 просмотров
Решения вопроса 1
@zloyusr
Нет разницы что использовать PubSub или RPC. Это два метода решения одной и той же проблемы. Что бы отправить сообщение конкретному пользователю надо просто сохранить в удобном виде Connection по событию onOpen и затем можно слать ему сообщения или через метод send напрямую или через callResult/callError для WampConnection.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@frei3000
Дергайте событие onCall сторонним скриптом, например:
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'pusher');
$socket->connect("tcp://localhost:5555");
        
$loop = React\EventLoop\Factory::create();
        
$loop->addPeriodicTimer(1, function() use ($socket){
    $socket->send('notices');
});
$loop->run();


Поддерживать жизнь скрипта можно, например, supervisor'ом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы