摘要:示例聊天室案例示例代碼發(fā)送消息聊天室成員接收消息開發(fā)在目錄下創(chuàng)建也可以是其它路徑只需修改中配置把當(dāng)前客戶端存儲到一個集合作為其它字符串亦可向當(dāng)前客戶端發(fā)送信息從集合中取出所有客戶度群發(fā)消息給集合中的客戶端通過連接池操作發(fā)
https://github.com/immusen/yii2-swoole-websocket
示例:
聊天室案例, 示例代碼: /websocket/controllers/RoomController.php
發(fā)送消息:
{ "jsonrpc":"2.0", "id":1, "method":"room/msg", "params":{ "id":"100111", "content":{ "text":"Hello world!" } } }
聊天室成員接收消息:
{ "jsonrpc":"2.0", "id":1, "result":{ "text":"Hello world!" } }
開發(fā):
1, 在websocket/controllers目錄下創(chuàng)建Controller, (也可以是其它路徑, 只需修改config/main.php中controllerNamespace配置)
addFds($this->fd, $param_1); # 向當(dāng)前websocket客戶端發(fā)送信息 $this->publish($this->fd, ["p1" => param_1, "p2" => param_2]); # 從集合中取出所有客戶度fd $fds_array = $this->getFds($param_1); # 群發(fā)消息給集合中的客戶端 $this->publish($fds_array, ["p1" => param_1, "p2" => param_2]); # 通過redis連接池操作redis $this->redis->set($param_1, 0) } public function actionBaz() { //... } }
2, 發(fā)送JSONRPC, 并指定method為"foo/bar", 并通過params傳遞相應(yīng)參數(shù)即可調(diào)用上述action
{ "jsonrpc":"2.0", "id":1, "method":"foo/bar", "params":{ "param_1":"client_01", "param_2":100, "param_n":{ "time":1551408888, "type":"report" } } }
所有的客戶端到服務(wù)器的RPC調(diào)用, 除用websocket客戶端之外, 也可以使用HTTP或Redis Publish來投遞, 該特性可以用于Yii Web應(yīng)用向Swoole worker投遞異步任務(wù)(例如發(fā)短信..), 在聊天室例子中, 可以這樣操作:
HTTP 請求:
http://127.0.0.1:8721/rpc?p={"jsonrpc":"2.0","id":1,"method":"room/msg","params":{"id":"100111","content":{"text":"System warning!"}}}
或 redis-cli:
127.0.0.1:6379> publish rpc "{"jsonrpc":"2.0","id":1,"method":"room/msg","params":{"id":"100111","content":{"text":"System warning!"}}}"
或 在Yii web 應(yīng)用中
Yii:$app->redis->publish("rpc", "{"jsonrpc":"2.0","id":1,"method":"room/msg","params":{"id":"100111","content":{"text":"System warning!"}}}")
或通過Hook(推薦方式), 支持runOnce, 確保任務(wù)即使在多Swoole實(shí)例的情況下只執(zhí)行一次, 詳見immusen/yii2-swoole-websocket/Hook.php
Yii::$app->hook->run("room/msg", ["id" => 100111, "content" => ["text" => "System warning!"]]); Yii::$app->hook->runOnce("sms/send", ["mobile" => 15600008721, "code" => "8721"]);
新升級:啟動腳本支持更多操作
./websocket-server {start|restart|reload|stop|status}
./websocket-server status master_pid=7404 start_time=1554030075 connection_num=130 accept_count=1025767 close_count=1025637 tasking_num=123 request_count=2051456 worker_request_count=511103 coroutine_num=2
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30919.html
摘要:交易所及第三方平臺充提網(wǎng)關(guān)接入指南本指南主要目的是幫助交易所和其它第三方平臺包括但不限于非應(yīng)用中心化應(yīng)用等搭建充提網(wǎng)關(guān)接入主網(wǎng),上線主資產(chǎn)及基于區(qū)塊鏈發(fā)行的,例如等?;驹泶蟛糠纸灰姿暗谌狡脚_使用的網(wǎng)關(guān)充值提現(xiàn)是一個中心化的應(yīng)用服務(wù)。 SEER交易所及第三方平臺充提網(wǎng)關(guān)接入指南 本指南主要目的是幫助交易所和其它第三方平臺(包括但不限于非SEER DAPPs應(yīng)用、中心化應(yīng)用等)搭建...
摘要:進(jìn)程可以使用函數(shù)向進(jìn)程投遞新的任務(wù)。當(dāng)前的進(jìn)程在調(diào)用回調(diào)函數(shù)時會將進(jìn)程狀態(tài)切換為忙碌,這時將不再接收新的,當(dāng)函數(shù)返回時會將進(jìn)程狀態(tài)切換為空閑然后繼續(xù)接收新的。當(dāng)進(jìn)程投遞的任務(wù)在中完成時,進(jìn)程會通過方法將任務(wù)處理的結(jié)果發(fā)送給進(jìn)程。 swoole——從入門到放棄(一) 一、swoole的源碼包安裝 下載swoole源碼:git clone https://gitee.com/swoole...
摘要:通信服務(wù)提供接口是如何與區(qū)塊鏈交互的關(guān)鍵。這通常通過將請求提交給基于或套接字的服務(wù)器來完成。初始化時會發(fā)生自動檢測有時,無法自動檢測節(jié)點(diǎn)的位置。使用自動檢測的示例一些節(jié)點(diǎn)提供超出標(biāo)準(zhǔn)的。是套接字的文件系統(tǒng)路徑。 通信服務(wù)提供接口是web3如何與區(qū)塊鏈交互的關(guān)鍵。接口接受JSON-RPC請求并返回響應(yīng)。這通常通過將請求提交給基于HTTP或IPC套接字的服務(wù)器來完成。 如果你已經(jīng)愉快地連接...
摘要:通信服務(wù)提供接口是如何與區(qū)塊鏈交互的關(guān)鍵。這通常通過將請求提交給基于或套接字的服務(wù)器來完成。初始化時會發(fā)生自動檢測有時,無法自動檢測節(jié)點(diǎn)的位置。使用自動檢測的示例一些節(jié)點(diǎn)提供超出標(biāo)準(zhǔn)的。是套接字的文件系統(tǒng)路徑。 通信服務(wù)提供接口是web3如何與區(qū)塊鏈交互的關(guān)鍵。接口接受JSON-RPC請求并返回響應(yīng)。這通常通過將請求提交給基于HTTP或IPC套接字的服務(wù)器來完成。 如果你已經(jīng)愉快地連接...
摘要:目錄初識創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。什么是異步任務(wù)把當(dāng)前的任務(wù)異步投遞到進(jìn)程池中執(zhí)行,不影響接下來的事務(wù)。 目錄 初識Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 什么是異步任務(wù)? 1.把當(dāng)前的任務(wù)異步投遞到TaskWorker進(jìn)程池中執(zhí)行,不影響接下來的事務(wù)。舉個栗子: showImg(https://segmentfa...
閱讀 1622·2019-08-30 13:18
閱讀 1599·2019-08-29 12:19
閱讀 2151·2019-08-26 13:57
閱讀 4171·2019-08-26 13:22
閱讀 1219·2019-08-26 10:35
閱讀 3017·2019-08-23 18:09
閱讀 2553·2019-08-23 17:19
閱讀 711·2019-08-23 17:18