能不能设置gateway给客户端发送消息的最大包长呢?如果发送的数据超出这个设定值,则分包发送。ps:分包发送的话会不会将上次发送的一部分数据覆盖掉呢?
是否分包发送,分多大的包,组包都可以业务自己控制 比如 Gateway::sendToClient($client_id, $buffer); 前strlen($buffer)判断下长度,如果超大需要分包就sub_str分成多个buffer,分多次发送。但是没看出来这有什么意义...
主要是:如果一次发送的数据很大,超出了socket缓存大小,那样的话不会出错吗?
不超过应用层缓冲区大小就不会,默认1M,可以手动设置,参见 http://doc3.workerman.net
socket的缓存不是默认8192的么?如果发送1M的包,socket会不会报错的呀?还是说workerman有将socket的缓存区大小改到了1M或者更多?
8192 是系统层面的socket缓冲区,workerman在应用层面增加了一层缓冲区,socket缓冲区满了会自动放在workerman在应用层缓冲区中,如果应用层缓冲区满了会触发onBufferFull,如果没设置onBufferFull,就会触发onError,详情看手册吧。
3Q~
是否分包发送,分多大的包,组包都可以业务自己控制
比如
Gateway::sendToClient($client_id, $buffer); 前strlen($buffer)判断下长度,如果超大需要分包就sub_str分成多个buffer,分多次发送。但是没看出来这有什么意义...
主要是:如果一次发送的数据很大,超出了socket缓存大小,那样的话不会出错吗?
不超过应用层缓冲区大小就不会,默认1M,可以手动设置,参见 http://doc3.workerman.net
socket的缓存不是默认8192的么?如果发送1M的包,socket会不会报错的呀?还是说workerman有将socket的缓存区大小改到了1M或者更多?
8192 是系统层面的socket缓冲区,workerman在应用层面增加了一层缓冲区,socket缓冲区满了会自动放在workerman在应用层缓冲区中,如果应用层缓冲区满了会触发onBufferFull,如果没设置onBufferFull,就会触发onError,详情看手册吧。
3Q~