这两天开发中要用到swoole的websocket,但是有些没太搞明白
$serv = new swoole_websocket_server("127.0.0.1", 9502);
$serv->on('Open', function($server, $req) {
echo "connection open: ".$req->fd;
});
$serv->on('Message', function($server, $frame) {
echo "message: ".$frame->data;
$server->push($frame->fd, json_encode(["hello", "world"]));
});
$serv->on('Close', function($server, $fd) {
echo "connection close: ".$fd;
});
$serv->start();
这是swoole官网的demo,通过监听消息事件客户端发送消息给服务端的时候,服务端会发送消息给客户端,那如果我想实现这种场景:如果队列里面有消息了,那就给用户发送一条消息(这里的队列假设为redis的队列),这样的话消息事件就监听不到了,请问一下这个如何实现
那你就要存储在线用户的数据啊。。连上了记录下用户标识和客户端在websocket的标识,一一对应,有数据了,你调用push方法把数据推给用户