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

gatewayworker自定義協(xié)議

h0r1z0n

看了workerman手冊(cè)的這個(gè)章節(jié)
定制通訊協(xié)議
http://doc3.workerman.net/protocols/how-protocols.html
以文中MyApp/Protocols/JsonNL.php的實(shí)現(xiàn),
放在gatewayworker中,是不是在GatewayWorker\Applications\下新建Protocols文件夾,然后建立JsonNL.php,這樣是不是項(xiàng)目名稱變成了Protocols,還是在具體在Applications\xxx項(xiàng)目\下建立Protocols?
GatewayWorker使用workerman自定義協(xié)議,應(yīng)該把自定義的協(xié)議文件放在哪個(gè)目錄呢?謝謝

7223 13 0
13個(gè)回答

walkor 打賞

在Applications\xxx項(xiàng)目\下建立Protocols

  • 暫無評(píng)論
h0r1z0n
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.5          PHP version:5.5.15
------------------------ WORKERS -------------------------------
worker               listen                 processes status
Register             text://0.0.0.0:1238     1        
SolarGateway         JsonNL://0.0.0.0:8282   4        
SolarBusinessWorker  none                    4        
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.

Fatal error: Uncaught exception 'Exception' with message 'class \Protocols\JsonN
L not exist' in D:\workerman\GatewayWorker\Workerman\Worker.php:649
Stack trace:
#0 D:\workerman\GatewayWorker\Workerman\Worker.php(426): Workerman\Worker->liste
n()
#1 D:\workerman\GatewayWorker\Workerman\Worker.php(345): Workerman\Worker::runAl
lWorkers()
#2 D:\workerman\GatewayWorker\Applications\Solar\start_gateway.php(64): Workerma
n\Worker::runAll()
#3 {main}
  thrown in D:\workerman\GatewayWorker\Workerman\Worker.php on line 649
process D:\workerman\GatewayWorker\Applications\Solar\start_gateway.php terminat
ed and try to restart
  • 暫無評(píng)論
walkor 打賞

請(qǐng)貼目錄結(jié)構(gòu)和JsonNL.php內(nèi)容

  • 暫無評(píng)論
h0r1z0n

gatewayworker下載github的最新版本
目錄結(jié)構(gòu)

.
├── Applications // 這里是所有開發(fā)者應(yīng)用項(xiàng)目
│   └── Solar      // 自定義項(xiàng)目
│       ├── Event.php // 開發(fā)者只需要關(guān)注這個(gè)文件
│       ├── start_gateway.php // gateway進(jìn)程啟動(dòng)腳本
│       ├── start_businessworker.php // businessWorker進(jìn)程啟動(dòng)腳本
│       └── start_register.php // 注冊(cè)服務(wù)啟動(dòng)腳本
│   ├── Protocols 
│   └──JsonNL.php //粘貼自手冊(cè)
├── GatewayWorker // GatewayWorker框架代碼
│   ├── BusinessWorker.php  // BusinessWorker進(jìn)程實(shí)現(xiàn)
│   ├── Gateway.php         // Gateway進(jìn)程實(shí)現(xiàn)
│   ├── Register.php        // 注冊(cè)服務(wù)進(jìn)程實(shí)現(xiàn)
│   ├── Lib
│   │   ├── Context.php     // Gateway與BusinessWorker通信上下文
│   │   ├── DbConnection.php// 一個(gè)數(shù)據(jù)庫連接類
│   │   ├── Db.php          // 數(shù)據(jù)庫連接管理類
│   │   └── Gateway.php     // Gateway通信接口類,給Event.php調(diào)用
│   └──── Protocols
│         └── GatewayProtocol.php // Gateway與BusinessWorker通信協(xié)議
│
├── Workerman // workerman內(nèi)核目錄
│
└── start.php // 全局啟動(dòng)腳本

JsonNL.php代碼

namespace Protocols;
class JsonNL
{
    /**
     * 檢查包的完整性
     * 如果能夠得到包長,則返回包的在buffer中的長度,否則返回0繼續(xù)等待數(shù)據(jù)
     * 如果協(xié)議有問題,則可以返回false,當(dāng)前客戶端連接會(huì)因此斷開
     * @param string $buffer
     * @return int
     */
    public static function input($buffer)
    {
        // 獲得換行字符"\n"位置
        $pos = strpos($buffer, "\n");
        // 沒有換行符,無法得知包長,返回0繼續(xù)等待數(shù)據(jù)
        if($pos === false)
        {
            return 0;
        }
        // 有換行符,返回當(dāng)前包長(包含換行符)
        return $pos+1;
    }

    /**
     * 打包,當(dāng)向客戶端發(fā)送數(shù)據(jù)的時(shí)候會(huì)自動(dòng)調(diào)用
     * @param string $buffer
     * @return string
     */
    public static function encode($buffer)
    {
        // json序列化,并加上換行符作為請(qǐng)求結(jié)束的標(biāo)記
        return json_encode($buffer)."\n";
    }

    /**
     * 解包,當(dāng)接收到的數(shù)據(jù)字節(jié)數(shù)等于input返回的值(大于0的值)自動(dòng)調(diào)用
     * 并傳遞給onMessage回調(diào)函數(shù)的$data參數(shù)
     * @param string $buffer
     * @return string
     */
    public static function decode($buffer)
    {
        // 去掉換行,還原成數(shù)組
        return json_decode(trim($buffer), true);
    }
}
//windows下測(cè)試最后修改了Applications \Solar\start_gateway.php
$gateway = new Gateway("JsonNL://0.0.0.0:8282");
  • 暫無評(píng)論
walkor 打賞

JsonNL.php 應(yīng)該放到新建的Protocos文件夾

  • 暫無評(píng)論
h0r1z0n

沒明白 ,我在Applications 下新建了Protocos,里面保存了JsonNL.php 有什么不對(duì)嗎?

  • 暫無評(píng)論
walkor 打賞
├── Applications // 這里是所有開發(fā)者應(yīng)用項(xiàng)目
│ └── Solar // 自定義項(xiàng)目
│ ├── Event.php // 開發(fā)者只需要關(guān)注這個(gè)文件
│ ├── start_gateway.php // gateway進(jìn)程啟動(dòng)腳本
│ ├── start_businessworker.php // businessWorker進(jìn)程啟動(dòng)腳本
│ └── start_register.php // 注冊(cè)服務(wù)啟動(dòng)腳本
│ ├── Protocols 
│ └──JsonNL.php //粘貼自手冊(cè)

你的目錄結(jié)構(gòu)看著 JsonNL.php 和 Protocols 目錄是平行的,JsonNL.php并沒有在Protocols目錄下

  • 暫無評(píng)論
h0r1z0n

我粘貼上顯示的有些問題

├── Applications // 這里是所有開發(fā)者應(yīng)用項(xiàng)目
│ └── Solar // 自定義項(xiàng)目
│          ├── Event.php // 開發(fā)者只需要關(guān)注這個(gè)文件
│          ├── start_gateway.php // gateway進(jìn)程啟動(dòng)腳本
│          ├── start_businessworker.php // businessWorker進(jìn)程啟動(dòng)腳本
│          └── start_register.php // 注冊(cè)服務(wù)啟動(dòng)腳本
│ ├── Protocols 
│          └──JsonNL.php //粘貼自手冊(cè)
  • 暫無評(píng)論
walkor 打賞

你可以把代碼包上來,我給你看下

  • 暫無評(píng)論
h0r1z0n

我覆蓋了wm,win版本那個(gè) 其他沒動(dòng)

  • 暫無評(píng)論
walkor 打賞

請(qǐng)?jiān)贏pplications\xxx項(xiàng)目\下建立Protocols

  • 暫無評(píng)論
h0r1z0n

不好意思犯了一個(gè)很低級(jí)的錯(cuò)誤,謝謝

  • 暫無評(píng)論
walkor 打賞

不客氣

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??