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

Error package. package_length=falseError 問(wèn)題咨詢

shanyi

問(wèn)題描述

環(huán)境:Linux
webman/gateway-worker v1.0.8
webman/think-orm v1.1.1
workerman/gateway-worker v3.1.1
workerman/http-client v2.0.1
workerman/psr7 v1.4.6
workerman/webman-framework v1.5.13
workerman/workerman v4.1.13

如題所示,我是在webman用使用的GatewayWorker,使用了自定義協(xié)議。我查詢了社區(qū)帖子說(shuō)出現(xiàn)這個(gè)錯(cuò)誤是錯(cuò)誤包導(dǎo)致的。但是我現(xiàn)在這個(gè)情況不是必顯。有時(shí)候logs日志會(huì)記錄有時(shí)候沒(méi)有

程序代碼

process.php 代碼

<?php
use Webman\GatewayWorker\Gateway;
use Webman\GatewayWorker\BusinessWorker;
use Webman\GatewayWorker\Register;
return [
    '4gateway' => [
        'handler'     => Gateway::class,
        'listen'      => 'Fournetwork://0.0.0.0:7474',
        'count'       => cpu_count(),
        'reloadable'  => false,
        'constructor' => ['config' => [
            'lanIp'           => '127.0.0.1',
            'startPort'       => 2400,
            'pingInterval'    => 120,
            'pingData'        => '',
            'pingNotResponseLimit'=>1,
            'registerAddress' => '127.0.0.1:1238',
            'onConnect'       => function(){},
        ]]
    ],
    '4worker' => [
        'handler'     => BusinessWorker::class,
        'count'       => cpu_count()*2,
        'constructor' => ['config' => [
            'eventHandler'    => plugin\webman\gateway\Events::class,
            'name'            => 'FourChatBusinessWorker',
            'registerAddress' => '127.0.0.1:1238',
        ]]
    ],
    '4register' => [
        'handler'     => Register::class,
        'listen'      => 'text://127.0.0.1:1238',
        'count'       => 1, // Must be 1
        'constructor' => []
    ],
];

自定義協(xié)議代碼
Fournetwork.php 代碼(位置在:根目錄\Protocols)

<?php
namespace Protocols;

class Fournetwork
{
    /**
     * 檢查包的完整性
     * 如果能夠得到包長(zhǎng),則返回包的在buffer中的長(zhǎng)度,否則返回0繼續(xù)等待數(shù)據(jù)
     * 如果協(xié)議有問(wèn)題,則可以返回false,當(dāng)前客戶端連接會(huì)因此斷開(kāi)
     * @param string $buffer
     * @return int
     */
    public static function input($buffer)
    {
        // 16進(jìn)制數(shù)據(jù)轉(zhuǎn)換
        $str = bin2hex($buffer);
        $pos = strpos($str, "fe");
        // 無(wú)法得知包長(zhǎng),返回0繼續(xù)等待數(shù)據(jù)
        if ($pos === false) {
            return false;
        }
        // 返回包的長(zhǎng)度
        return strlen($buffer);
    }

    /**
     * 打包,當(dāng)向客戶端發(fā)送數(shù)據(jù)的時(shí)候會(huì)自動(dòng)調(diào)用
     * @param string $buffer
     * @return string
     */
    public static function encode($buffer)
    {
        // 這里可以對(duì)數(shù)據(jù)進(jìn)行處理,然后返回處理后的數(shù)據(jù)
        return $buffer;
    }

    /**
     * 解包,當(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)
    {
        // 這里可以對(duì)數(shù)據(jù)進(jìn)行解析,然后返回解析后的數(shù)據(jù)
        return $buffer;
    }
}

報(bào)錯(cuò)信息

日志記錄的報(bào)錯(cuò)信息

Error package. package_length=falseError 

備注說(shuō)明

因?yàn)槲沂歉布?duì)接的,所以發(fā)送的包都是hex2bin后的數(shù)據(jù)
格式如下:

$sendData = hex2bin('發(fā)送的數(shù)據(jù)');
Gateway::sendToClient($client_id, $sendData);
1107 1 0
1個(gè)回答

meows
    /**
     * 檢查包的完整性
     * 如果能夠得到包長(zhǎng),則返回包的在buffer中的長(zhǎng)度,否則返回0繼續(xù)等待數(shù)據(jù)
     * 如果協(xié)議有問(wèn)題,則可以返回false,當(dāng)前客戶端連接會(huì)因此斷開(kāi)
     * @param string $buffer
     * @return int
     */
    public static function input($buffer)
    {
        // 16進(jìn)制數(shù)據(jù)轉(zhuǎn)換
        $str = bin2hex($buffer);
        $pos = strpos($str, "fe");
        // 無(wú)法得知包長(zhǎng),返回0繼續(xù)等待數(shù)據(jù)
        if ($pos === false) {
            return false;
        }
        // 返回包的長(zhǎng)度
        return strlen($buffer);
    }

$pos === false 你要改成0,不能是布爾值。

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