摘要:示例聊天室案例示例代碼發送消息聊天室成員接收消息開發在目錄下創建也可以是其它路徑只需修改中配置把當前客戶端存儲到一個集合作為其它字符串亦可向當前客戶端發送信息從集合中取出所有客戶度群發消息給集合中的客戶端通過連接池操作發
https://github.com/immusen/yii2-swoole-websocket
示例:
聊天室案例, 示例代碼: /websocket/controllers/RoomController.php
發送消息:
{ "jsonrpc":"2.0", "id":1, "method":"room/msg", "params":{ "id":"100111", "content":{ "text":"Hello world!" } } }
聊天室成員接收消息:
{ "jsonrpc":"2.0", "id":1, "result":{ "text":"Hello world!" } }
開發:
1, 在websocket/controllers目錄下創建Controller, (也可以是其它路徑, 只需修改config/main.php中controllerNamespace配置)
addFds($this->fd, $param_1); # 向當前websocket客戶端發送信息 $this->publish($this->fd, ["p1" => param_1, "p2" => param_2]); # 從集合中取出所有客戶度fd $fds_array = $this->getFds($param_1); # 群發消息給集合中的客戶端 $this->publish($fds_array, ["p1" => param_1, "p2" => param_2]); # 通過redis連接池操作redis $this->redis->set($param_1, 0) } public function actionBaz() { //... } }
2, 發送JSONRPC, 并指定method為"foo/bar", 并通過params傳遞相應參數即可調用上述action
{ "jsonrpc":"2.0", "id":1, "method":"foo/bar", "params":{ "param_1":"client_01", "param_2":100, "param_n":{ "time":1551408888, "type":"report" } } }
所有的客戶端到服務器的RPC調用, 除用websocket客戶端之外, 也可以使用HTTP或Redis Publish來投遞, 該特性可以用于Yii Web應用向Swoole worker投遞異步任務(例如發短信..), 在聊天室例子中, 可以這樣操作:
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 應用中
Yii:$app->redis->publish("rpc", "{"jsonrpc":"2.0","id":1,"method":"room/msg","params":{"id":"100111","content":{"text":"System warning!"}}}")
或通過Hook(推薦方式), 支持runOnce, 確保任務即使在多Swoole實例的情況下只執行一次, 詳見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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30919.html
摘要:交易所及第三方平臺充提網關接入指南本指南主要目的是幫助交易所和其它第三方平臺包括但不限于非應用中心化應用等搭建充提網關接入主網,上線主資產及基于區塊鏈發行的,例如等。基本原理大部分交易所及第三方平臺使用的網關充值提現是一個中心化的應用服務。 SEER交易所及第三方平臺充提網關接入指南 本指南主要目的是幫助交易所和其它第三方平臺(包括但不限于非SEER DAPPs應用、中心化應用等)搭建...
摘要:進程可以使用函數向進程投遞新的任務。當前的進程在調用回調函數時會將進程狀態切換為忙碌,這時將不再接收新的,當函數返回時會將進程狀態切換為空閑然后繼續接收新的。當進程投遞的任務在中完成時,進程會通過方法將任務處理的結果發送給進程。 swoole——從入門到放棄(一) 一、swoole的源碼包安裝 下載swoole源碼:git clone https://gitee.com/swoole...
摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...
摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...
摘要:目錄初識創建服務器上創建服務器下異步任務持續更新中。。。什么是異步任務把當前的任務異步投遞到進程池中執行,不影響接下來的事務。 目錄 初識Swoole 創建服務器(上) 創建服務器(下) 異步任務task 持續更新中。。。 什么是異步任務? 1.把當前的任務異步投遞到TaskWorker進程池中執行,不影響接下來的事務。舉個栗子: showImg(https://segmentfa...
閱讀 1588·2019-08-30 13:18
閱讀 1578·2019-08-29 12:19
閱讀 2094·2019-08-26 13:57
閱讀 4137·2019-08-26 13:22
閱讀 1179·2019-08-26 10:35
閱讀 2991·2019-08-23 18:09
閱讀 2500·2019-08-23 17:19
閱讀 677·2019-08-23 17:18