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

入門指引

重要的事情說三遍

業(yè)務(wù)開發(fā)只需要關(guān)注 Applications/項目/Events.php一個文件即可。
業(yè)務(wù)開發(fā)只需要關(guān)注 Applications/項目/Events.php一個文件即可。
業(yè)務(wù)開發(fā)只需要關(guān)注 Applications/項目/Events.php一個文件即可。

開放的端口及協(xié)議在start_gateway.php中更改。參見Gateway類的使用一章。

注意

1、服務(wù)端啟動成功,但是無法通訊,請檢查服務(wù)器防火墻。

2、客戶端只能連接Gateway端口,不要連接Register端口。

3、客戶端與服務(wù)端要能保持正常通訊,需要保證客戶端與服務(wù)端的通訊協(xié)議是一致的。比如服務(wù)端是websocket協(xié)議,客戶端也要使用websocket協(xié)議才能通訊,否則無法通訊。

4、長連接應(yīng)用切記需要開啟應(yīng)用層心跳(GatewayWorker提供了設(shè)置,參加心跳檢測),心跳間隔20-30秒最佳,為了避免長連接因為長時間不通訊被節(jié)點防火墻斷開。

5、如果業(yè)務(wù)并發(fā)連接數(shù)超過1000同時在線,請務(wù)必優(yōu)化linux內(nèi)核,并安裝event擴展或者libevent擴展。

6、業(yè)務(wù)代碼更改后請運行 php start.php reload 更新代碼,否則更改的代碼不會生效。

目錄結(jié)構(gòu)

.
├── Applications // 這里是所有開發(fā)者應(yīng)用項目
│?? └── YourApp  // 其中一個項目目錄,目錄名可以自定義
│??     ├── Events.php // 開發(fā)者只需要關(guān)注這個文件
│??     ├── start_gateway.php // gateway進程啟動腳本,包括端口號等設(shè)置
│??     ├── start_businessworker.php // businessWorker進程啟動腳本
│??     └── start_register.php // 注冊服務(wù)啟動腳本
│
├── start.php // 全局啟動腳本,此腳本會依次加載Applications/項目/start_*.php啟動腳本
│
└── vendor    // GatewayWorker框架和Workerman框架源碼目錄,此目錄開發(fā)者不用關(guān)心

說明

一般來說開發(fā)者只需要關(guān)注Applications/YourApp/Events.php。因為所有業(yè)務(wù)代碼都在這里開始的。vendor目錄為框架目錄,開發(fā)者不要改動,也不用去理解。

其它start_gateway.php start_businessworker.php start_register.php分別是進程啟動腳本,開發(fā)者一般不需要改動這三個文件。三個腳本統(tǒng)一由根目錄的start.php啟動。

Events.php

例如下面是一個簡單的聊天室示例

<?php
use \GatewayWorker\Lib\Gateway;
class Events
{
    /**
     * 當客戶端連接時觸發(fā)
     * 如果業(yè)務(wù)不需此回調(diào)可以刪除onConnect
     * @param int $client_id 連接id
     */
    public static function onConnect($client_id)
    {
        // 向當前client_id發(fā)送數(shù)據(jù)
        Gateway::sendToClient($client_id, "Hello $client_id");
        // 向所有人發(fā)送
        Gateway::sendToAll("$client_id login");
    }

   /**
    * 當客戶端發(fā)來消息時觸發(fā)
    * @param int $client_id 連接id
    * @param string $message 具體消息
    */
   public static function onMessage($client_id, $message)
   {
        // 向所有人發(fā)送
        Gateway::sendToAll("$client_id said $message");
   }

   /**
    * 當用戶斷開連接時觸發(fā)
    * @param int $client_id 連接id
    */
   public static function onClose($client_id)
   {
       // 向所有人發(fā)送
       GateWay::sendToAll("$client_id logout");
   }
}

Events.php中定義5個事件回調(diào)方法,

  • onWorkerStart businessWorker進程啟動事件(一般用不到)
  • onConnect 連接事件(比較少用到)
  • onMessage 消息事件(必用)
  • onClose 連接斷開事件(比較常用到)
  • onWorkerStop businessWorker進程退出事件(幾乎用不到)

5個回調(diào)接口說明參見 Events類的回調(diào)接口 一節(jié)

其中消息事件onMessage是必須的,其它事件回調(diào)可以不實現(xiàn)。

<?php
use \GatewayWorker\Lib\Gateway;
class Events
{
   /**
    * 當客戶端發(fā)來消息時觸發(fā)
    * @param int $client_id 連接id
    * @param string $message 具體消息
    */
   public static function onMessage($client_id, $message)
   {
        // 向所有人發(fā)送
        Gateway::sendToAll("$client_id said $message");
   }
}

start_gateway.php

start_gateway.php為gateway進程啟動腳本,主要定義了客戶端連接的端口號、協(xié)議等信息,具體參見 Gateway類的使用一節(jié)。

客戶端連接的就是start_gateway.php中初始化的Gateway端口。

start_businessworker.php

start_businessworker.php為businessWorker進程啟動腳本,也即是調(diào)用Events.php的業(yè)務(wù)處理進程,具體參見 BusinessWorker類的使用一節(jié)。

start_register.php

start_register.php為注冊服務(wù)啟動腳本,用于協(xié)調(diào)GatewayWorker集群內(nèi)部Gateway與Worker的通信,參見Register類使用一節(jié)。

注意:客戶端不要連接Register服務(wù)端口,客戶端應(yīng)該連接Gateway端口

編輯于2024-03-13 17:37:33 完善本頁 +發(fā)起討論
贊助商