91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中如何將訂閱消息發到WebSocket客戶端

發布時間:2020-06-15 14:33:29 來源:億速云 閱讀:207 作者:鴿子 欄目:關系型數據庫

PHP 的redis擴展是阻塞式 IO ,使用訂閱/發布模式時,會導致整個進程進入阻塞。因此必須使用Swoole\Redis異步客戶端來實現。

實例代碼

$server = new swoole_websocket_server("0.0.0.0", 9501);
$server->on('workerStart', function ($server, $workerId) {
    $client = new swoole_redis;
    $client->on('message', function (swoole_redis $client, $result) use ($server) {
        if ($result[0] == 'message') {
            foreach($server->connections as $fd) {
                $server->push($fd, $result[1]);
            }
        }
    });
    $client->connect('127.0.0.1', 6379, function (swoole_redis $client, $result) {
        $client->subscribe('msg_0');
    });
});
$server->on('open', function ($server, $request) {
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
    $server->push($frame->fd, "hello");
});
$server->on('close', function ($serv, $fd) {
});
$server->start();

實現過程

在進程啟動(onWorkerStart)時創建了Swoole\Redis客戶端,連接到Redis服務器

連接成功后,訂閱msg_0主題的消息

當有新的message時,Swoole\Redis會觸發onMessage事件回調

在這個回調函數中使用$server->connections遍歷服務器所有的連接,發送消息

以上就是實現從Redis中訂閱消息轉發到 WebSocket 客戶端的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巍山| 安徽省| 南丰县| 罗甸县| 康保县| 大冶市| 连山| 大方县| 九台市| 乐东| 武城县| 阜新市| 青海省| 崇州市| 罗山县| 扎赉特旗| 永泰县| 绥江县| 德兴市| 景洪市| 新沂市| 定安县| 浙江省| 玉林市| 昭通市| 安新县| 剑河县| 新源县| 浦江县| 卢氏县| 宣威市| 新宾| 交城县| 章丘市| 安徽省| 贵州省| 南安市| 阜新市| 禹城市| 卢龙县| 乌拉特中旗|