国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何實(shí)現(xiàn)從 Redis 中訂閱消息轉(zhuǎn)發(fā)到 WebSocket 客戶端

Jinkey / 2409人閱讀

摘要:的擴(kuò)展是阻塞式,使用訂閱發(fā)布模式時(shí),會(huì)導(dǎo)致整個(gè)進(jìn)程進(jìn)入阻塞。因此必須使用異步客戶端來實(shí)現(xiàn)。

PHP 的redis擴(kuò)展是阻塞式 IO ,使用訂閱/發(fā)布模式時(shí),會(huì)導(dǎo)致整個(gè)進(jìn)程進(jìn)入阻塞。因此必須使用SwooleRedis異步客戶端來實(shí)現(xiàn)。

實(shí)例代碼
$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();
實(shí)現(xiàn)過程

在進(jìn)程啟動(dòng)(onWorkerStart)時(shí)創(chuàng)建了SwooleRedis客戶端,連接到Redis服務(wù)器

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

當(dāng)有新的message時(shí),SwooleRedis會(huì)觸發(fā)onMessage事件回調(diào)

在這個(gè)回調(diào)函數(shù)中使用$server->connections遍歷服務(wù)器所有的連接,發(fā)送消息

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/25785.html

相關(guān)文章

  • 分布式WebSocket集群解決方案

    摘要:廣播這是最簡單的集群通訊解決方案。實(shí)現(xiàn)方法在治理中心監(jiān)聽集群服務(wù)事件,并及時(shí)更新哈希環(huán)。 問題起因 最近做項(xiàng)目時(shí)遇到了需要多用戶之間通信的問題,涉及到了WebSocket握手請(qǐng)求,以及集群中WebSocket Session共享的問題。 期間我經(jīng)過了幾天的研究,總結(jié)出了幾個(gè)實(shí)現(xiàn)分布式WebSocket集群的辦法,從zuul到spring cloud gateway的不同嘗試,總結(jié)出了...

    nanchen2251 評(píng)論0 收藏0
  • 全棧開發(fā)——?jiǎng)邮执蛟鞂儆谧约旱闹辈ラg(Vue+SpringBoot+Nginx)

    摘要:經(jīng)過琢磨,其實(shí)是要考慮安全性的。具體在以下幾個(gè)方面跨域連接協(xié)議升級(jí)前握手?jǐn)r截器消息信道攔截器對(duì)于跨域問題,我們可以通過方法來設(shè)置可連接的域名,防止跨站連接。 前言 大學(xué)的學(xué)習(xí)時(shí)光臨近尾聲,感嘆時(shí)光匆匆,三年一晃而過。同學(xué)們都忙著找工作,我也在這里拋一份簡歷吧,歡迎各位老板和獵手誠邀。我們進(jìn)入正題。直播行業(yè)是當(dāng)前火熱的行業(yè),誰都想從中分得一杯羹,直播養(yǎng)活了一大批人,一個(gè)平臺(tái)主播粗略估計(jì)就...

    e10101 評(píng)論0 收藏0
  • Django WebSocket Redis 在線聊天室

    摘要:它采用了請(qǐng)求響應(yīng)模型。通信請(qǐng)求只能由客戶端發(fā)起,服務(wù)端對(duì)請(qǐng)求做出應(yīng)答處理弊端協(xié)議無法實(shí)現(xiàn)服務(wù)器主動(dòng)向客戶端發(fā)起消息。如何使用客戶端創(chuàng)建對(duì)象屬性表示連接狀態(tài)可選值表示連接尚未建立。表示連接正在進(jìn)行關(guān)閉。 一言不合就上效果圖演示showImg(https://segmentfault.com/img/bVbkUDl?w=1920&h=638); 項(xiàng)目:http://112.74.164.1...

    ranwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<