這兩天開發中要用到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方法把數據推給用戶