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

gatewayworker 二進(jìn)制ws首次建立連接發(fā)文異常

jackyxie

描述:
使用gatewayWorker部署ws服務(wù)端,businessWorker在發(fā)出數(shù)據(jù)到gateway的時(shí)候,先進(jìn)行 gzip 壓縮,然后再發(fā)送。

問題:
客戶端首次建立連接的時(shí)候,出現(xiàn)服務(wù)器端發(fā)送的首次數(shù)據(jù),類型為Text,而不是Binary類型。
(附件中紅色方框 內(nèi)容為 Text的,屬于異常的情況)

相關(guān)gateway代碼、Events代碼

//gateway啟動(dòng)文件的 二進(jìn)制傳輸設(shè)置
$gateway->onConnect = function($connection)
{
    $connection->onWebSocketConnect = function($connection , $http_header)
    {
        $connection->websocketType = Workerman\Protocols\Websocket::BINARY_TYPE_ARRAYBUFFER;
    };
};

//Events模塊 簡(jiǎn)要相關(guān)的地方

class Events
{
    public static function onWorkerStart($businessWorker)
    {
        //process_timeout
        $businessWorker->processTimeoutHandler = function ($trace_str, $exception) use ($businessWorker) {
            \Workerman\Worker::log($trace_str);
            return true;
        };
    }

    public static function onConnect($client_id)
    {
        $group_name = 'rate_group';
        //獲?。蛻舳诵枰模┏跏蓟瘮?shù)據(jù)
        $rateData = self::getExRate();
        $json_data = json_encode(['type' => $group_name, 'data' => $rateData]);

        //發(fā)送gzip數(shù)據(jù)(此處就是附件圖片出現(xiàn) Text 的情況)
        if (!empty($json_data)) {
            $gzip_msg = gzencode($data);
            Gateway::sendToClient($client_id, $gzip_msg);
        }

        //訂閱頻道
        Gateway::joinGroup($client_id, $group_name);
}
4217 1 0
1個(gè)回答

walkor 打賞

onConnect是TCP連接建立是執(zhí)行,onWebSocketConnect是TCP連接建立完畢完成websocket握手后執(zhí)行。
所以Events::onConnect先執(zhí)行,然后才執(zhí)行onWebSocketConnect,所以Events::onConnect里業(yè)務(wù)邏輯發(fā)送數(shù)據(jù)的時(shí)候gateway一側(cè)$connection->websocketType = Workerman\Protocols\Websocket::BINARY_TYPE_ARRAYBUFFER; 可能還沒執(zhí)行到。

gateway.php 里onConnect改成如下試下:

//gateway啟動(dòng)文件的 二進(jìn)制傳輸設(shè)置
$gateway->onConnect = function($connection)
{
    $connection->websocketType = Workerman\Protocols\Websocket::BINARY_TYPE_ARRAYBUFFER;
};
  • jackyxie 2019-11-13

    感謝,目前按照這個(gè)設(shè)置,測(cè)試都沒有出現(xiàn)問題了。

年代過于久遠(yuǎn),無法發(fā)表回答
??