国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何不改動 GatewayWorker 依賴包下自定義協(xié)議

北橋蘇

前言

GatewayWorker 是 Workerman 的一個框架,對應(yīng)用層開發(fā)者更友好。

GatewayWorker 多了一個網(wǎng)關(guān),也就是 Gateway,負(fù)責(zé)與客戶端連接,消息轉(zhuǎn)發(fā)等。

而自定義的協(xié)議,也就是 gateway 面向客戶端提供服務(wù)的協(xié)議,下面就簡單收一下 GatewayWorker 啟動后連接的過程吧。

GatewayWorker 流程

  1. 運(yùn)行 php think worker:gateway start。
  2. 啟動 Register 進(jìn)程并開始端口監(jiān)聽。
  3. 啟動 BusinessWorker 進(jìn)程,開始異步連接 Register。
  4. 啟動 Gateway 進(jìn)程,開啟內(nèi)部協(xié)議 (GatewayProtocol) 并監(jiān)聽,同時異步連接 Register。
  5. Gateway 進(jìn)程將開啟的 GatewayProtocol 服務(wù)地址發(fā)給 Register。
  6. Register 接收 Gateway 內(nèi)部通訊地址廣播給所有 BusinessWorker 進(jìn)程。
  7. BusinessWorker 異步鏈接 Gateway,同時 Gateway 也監(jiān)聽來自客戶端的鏈接。
  8. 當(dāng)客戶端連接 Gateway 發(fā)來消息時,則他從連接的 BusinessWorker 中抽取一個轉(zhuǎn)發(fā)。
  9. BusinessWorker 則將連接事件交給 Event 業(yè)務(wù)處理。
  10. Event 處理后又發(fā)給 Gateway,Gateway 再發(fā)給客戶端。

ThinkPHP 集成 GatewayWorker

現(xiàn)在新版的 TP 框架已經(jīng)很好的集成了 GatewayWorker,不再像以前要改動入口文件。composer require topthink/think-worker 就可以安裝,里面分別時 think-worker,gateway-worker 和 workerman 三個包。而為了不破環(huán) vendor 包,自定義的協(xié)議最好寫在 TP 框架的應(yīng)用層。
?

開始操作

app 目錄下創(chuàng)建一個 library (目錄自行控制),再見一下 Game.php (舉個例子,協(xié)議名看自己)。
Game.php 需要實(shí)現(xiàn) Workerman 的 ProtocolInterface,且要完成 input,decode,encode 三個方法,之前有介紹,這里就略過。

截圖

打開 config 的 gateway_worker.php,以下先不做處理的寫好 game 協(xié)議。

截圖

直接 php think worker:gateway start 運(yùn)行,則直接報錯。

截圖

因?yàn)?gateway 外部協(xié)議需要 Workerman\Protocols 的命令空間,所以只需要給自定義的協(xié)議類起一個別名。

arduino 代碼解讀復(fù)制代碼class_alias('app\library\Game', 'Protocols\Game');

截圖

運(yùn)行一下并做了測試,這樣就完成了。

截圖
截圖

776 2 3
2個評論

zaj

好,以后試試。

  • 暫無評論
釋永戰(zhàn)

嗯,不錯,學(xué)習(xí)了

  • 暫無評論

北橋蘇

346
積分
0
獲贊數(shù)
0
粉絲數(shù)
2019-08-03 加入
??