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

資訊專欄INFORMATION COLUMN

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

MobService / 1437人閱讀

摘要:示例聊天室案例示例代碼發送消息聊天室成員接收消息開發在目錄下創建也可以是其它路徑只需修改中配置把當前客戶端存儲到一個集合作為其它字符串亦可向當前客戶端發送信息從集合中取出所有客戶度群發消息給集合中的客戶端通過連接池操作發

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交易所及第三方平臺充提網關接入指南 本指南主要目的是幫助交易所和其它第三方平臺(包括但不限于非SEER DAPPs應用、中心化應用等)搭建...

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

    摘要:進程可以使用函數向進程投遞新的任務。當前的進程在調用回調函數時會將進程狀態切換為忙碌,這時將不再接收新的,當函數返回時會將進程狀態切換為空閑然后繼續接收新的。當進程投遞的任務在中完成時,進程會通過方法將任務處理的結果發送給進程。 swoole——從入門到放棄(一) 一、swoole的源碼包安裝 下載swoole源碼:git clone https://gitee.com/swoole...

    morgan 評論0 收藏0
  • python借助web3py與以太坊區塊鏈節點交互的幾種方式

    摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...

    booster 評論0 收藏0
  • python借助web3py與以太坊區塊鏈節點交互的幾種方式

    摘要:通信服務提供接口是如何與區塊鏈交互的關鍵。這通常通過將請求提交給基于或套接字的服務器來完成。初始化時會發生自動檢測有時,無法自動檢測節點的位置。使用自動檢測的示例一些節點提供超出標準的。是套接字的文件系統路徑。 通信服務提供接口是web3如何與區塊鏈交互的關鍵。接口接受JSON-RPC請求并返回響應。這通常通過將請求提交給基于HTTP或IPC套接字的服務器來完成。 如果你已經愉快地連接...

    vboy1010 評論0 收藏0
  • swoole學習手記(四)步任務task

    摘要:目錄初識創建服務器上創建服務器下異步任務持續更新中。。。什么是異步任務把當前的任務異步投遞到進程池中執行,不影響接下來的事務。 目錄 初識Swoole 創建服務器(上) 創建服務器(下) 異步任務task 持續更新中。。。 什么是異步任務? 1.把當前的任務異步投遞到TaskWorker進程池中執行,不影響接下來的事務。舉個栗子: showImg(https://segmentfa...

    vincent_xyb 評論0 收藏0

發表評論

0條評論

MobService

|高級講師

TA的文章

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