Gateway可以设置发送消息的最大包长吗?

MyLover

能不能设置gateway给客户端发送消息的最大包长呢?如果发送的数据超出这个设定值,则分包发送。ps:分包发送的话会不会将上次发送的一部分数据覆盖掉呢?

3500 6 0
6个回答

walkor

是否分包发送,分多大的包,组包都可以业务自己控制
比如
Gateway::sendToClient($client_id, $buffer); 前strlen($buffer)判断下长度,如果超大需要分包就sub_str分成多个buffer,分多次发送。但是没看出来这有什么意义...

  • 暂无评论
MyLover

主要是:如果一次发送的数据很大,超出了socket缓存大小,那样的话不会出错吗?

  • 暂无评论
walkor

不超过应用层缓冲区大小就不会,默认1M,可以手动设置,参见 http://doc3.workerman.net

  • 暂无评论
MyLover

socket的缓存不是默认8192的么?如果发送1M的包,socket会不会报错的呀?还是说workerman有将socket的缓存区大小改到了1M或者更多?

  • 暂无评论
walkor

8192 是系统层面的socket缓冲区,workerman在应用层面增加了一层缓冲区,socket缓冲区满了会自动放在workerman在应用层缓冲区中,如果应用层缓冲区满了会触发onBufferFull,如果没设置onBufferFull,就会触发onError,详情看手册吧。

  • 暂无评论
MyLover

3Q~

  • 暂无评论
年代过于久远,无法发表回答
🔝