GatewayWorker 是 Workerman 的一個框架,對應(yīng)用層開發(fā)者更友好。
GatewayWorker 多了一個網(wǎng)關(guān),也就是 Gateway,負(fù)責(zé)與客戶端連接,消息轉(zhuǎn)發(fā)等。
而自定義的協(xié)議,也就是 gateway 面向客戶端提供服務(wù)的協(xié)議,下面就簡單收一下 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)行一下并做了測試,這樣就完成了。
好,以后試試。