成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

yii2-swoole-websocket, 支持JSONRPC通過WS、HTTP、Redis投遞異

MobService / 1493人閱讀

摘要:示例聊天室案例示例代碼發(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

相關(guān)文章

  • SEER交易所及第三方平臺充提網(wǎng)關(guān)接入指南

    摘要:交易所及第三方平臺充提網(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)用等)搭建...

    appetizerio 評論0 收藏0
  • swoole——從入門到放棄(一)

    摘要:進(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...

    morgan 評論0 收藏0
  • python借助web3py與以太坊區(qū)塊鏈節(jié)點(diǎn)交互的幾種方式

    摘要:通信服務(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)愉快地連接...

    booster 評論0 收藏0
  • python借助web3py與以太坊區(qū)塊鏈節(jié)點(diǎn)交互的幾種方式

    摘要:通信服務(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)愉快地連接...

    vboy1010 評論0 收藏0
  • swoole學(xué)習(xí)手記(四)步任務(wù)task

    摘要:目錄初識創(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...

    vincent_xyb 評論0 收藏0

發(fā)表評論

0條評論

MobService

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<