摘要:的擴展是阻塞式,使用訂閱發布模式時,會導致整個進程進入阻塞。因此必須使用異步客戶端來實現。
PHP 的redis擴展是阻塞式 IO ,使用訂閱/發布模式時,會導致整個進程進入阻塞。因此必須使用SwooleRedis異步客戶端來實現。
實例代碼$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)時創建了SwooleRedis客戶端,連接到Redis服務器
連接成功后,訂閱msg_0主題的消息
當有新的message時,SwooleRedis會觸發onMessage事件回調
在這個回調函數中使用$server->connections遍歷服務器所有的連接,發送消息
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25785.html
摘要:廣播這是最簡單的集群通訊解決方案。實現方法在治理中心監聽集群服務事件,并及時更新哈希環。 問題起因 最近做項目時遇到了需要多用戶之間通信的問題,涉及到了WebSocket握手請求,以及集群中WebSocket Session共享的問題。 期間我經過了幾天的研究,總結出了幾個實現分布式WebSocket集群的辦法,從zuul到spring cloud gateway的不同嘗試,總結出了...
摘要:經過琢磨,其實是要考慮安全性的。具體在以下幾個方面跨域連接協議升級前握手攔截器消息信道攔截器對于跨域問題,我們可以通過方法來設置可連接的域名,防止跨站連接。 前言 大學的學習時光臨近尾聲,感嘆時光匆匆,三年一晃而過。同學們都忙著找工作,我也在這里拋一份簡歷吧,歡迎各位老板和獵手誠邀。我們進入正題。直播行業是當前火熱的行業,誰都想從中分得一杯羹,直播養活了一大批人,一個平臺主播粗略估計就...
摘要:它采用了請求響應模型。通信請求只能由客戶端發起,服務端對請求做出應答處理弊端協議無法實現服務器主動向客戶端發起消息。如何使用客戶端創建對象屬性表示連接狀態可選值表示連接尚未建立。表示連接正在進行關閉。 一言不合就上效果圖演示showImg(https://segmentfault.com/img/bVbkUDl?w=1920&h=638); 項目:http://112.74.164.1...
閱讀 894·2021-09-03 10:42
閱讀 1511·2019-08-30 15:56
閱讀 1444·2019-08-29 17:27
閱讀 870·2019-08-29 15:25
閱讀 3156·2019-08-26 18:27
閱讀 2480·2019-08-26 13:41
閱讀 1888·2019-08-26 10:39
閱讀 1570·2019-08-23 18:36