关于使用text协议问题

shanyi

问题描述

看到文档里有说使用text协议可以解决TCP粘包问题。我用了之后测试出现的是比如我第一次发送的数据是不带\n结尾的数据,第二次发送的数据是带\n结尾的。那服务端这边会把第一次发送的数据一起传输过来。
我不知道这样是否是正常的且正确的。但是我想要的结果是不带\n的数据就不要了。
第一次发送的数据为:哈哈
第二次发送的数据为:嘿嘿\n
服务端显示:哈哈嘿嘿

我使用的是webman,安装的GatewayWorker代码如下:
    'gatewaytcp' => [
        'handler'     => Gateway::class,
        'listen'      => 'text://0.0.0.0:7373',
        'count'       => cpu_count(),
        'reloadable'  => false,
        'constructor' => ['config' => [
            'lanIp'           => '127.0.0.1',
            'startPort'       => 3300,
            'pingInterval'    => 25,
            'pingData'        => '{"type":"ping"}',
            'registerAddress' => '127.0.0.1:1236',
            'onConnect'       => function(){},
        ]]
    ],
    public static function onMessage($client_id, $message)
    {
        Log::notice($message);
        // 发送响应给客户端
        Gateway::sendToClient($client_id, "okkkkk");
    }

449 1 0
1个回答

yongdao35

框架怎么可能把数据随意丢弃,那不是出bug了...
text协议只认\n为结束符,遇到一个结束符就认为是一个完整请求,和发几次数据没有关系

  • 暂无评论
🔝