包裹是按件发送的.我有两个选择;我可以设置缓冲区并将整个包装整合在一起,或者在完成所有传输后组合碎片.我认为第一个选项(缓冲物)是正确的方法.
我正在定义缓冲区大小,但它在第一部分不起作用.在其他部分,它的工作原理,但使用这种方法我不能将整个包装整体,因为第一部分限制为5,24 Kb.
你可以在下面找到我的代码:
$loop = React\EventLoop\Factory::create(); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dns = $dnsResolverFactory->createCached('8.8.8.8',$loop); $connector = new React\SocketClient\Connector($loop,$dns); $connector->create( ENDPOINT_IP,ENDPOINT_PORT )->then(function (React\Stream\Stream $stream) use ($loop) { $command = '{C:"EL",bmId:43,inst:"my_instance",tok:"my_token"}'; $command_length = strlen($command); $command_length = pack("N",$command_length); $stream->write($command_length); $stream->write($command); $stream->bufferSize = 999999; $stream->on('data',function ($data) { $package = substr($data,4); $unpack = unpack('N',$package); // I'm getting whole package size echo $data; }); }); $loop->run();
我尝试在$stream-> on(‘data’,function($data){line下定义一个缓冲区大小,但是你猜它失败了.我不知道如何正确处理它.
提前致谢.