请问我给客户端发送一个长字符串被截断成两截是个什么原理。。。客户端收到两次数据,拼起来是完整数据。
是在1440字节截断的
tcp是流式的,一小段一小段传输给服务端的,并且tcp流没有数据边界,不知道哪里是结束,服务端每收到一小段数据后就触发消息事件。这种情况需要有个应用层协议区分tcp流哪里是开始,哪里是结束。例如http应用层协议是在http头部放了一个Content_length:xxx 表示这个包到底有多长,服务端就知道这个包的长度,如果读取的长度不够,就继续等待数据,直到读取足够的长度才触发onMessage事件。worker man支持应用层协议设置,也可以定义自己的应用层协议,可以去看下workerman手册协议部分
用GatewayWorker也会出现这种情况么?那个等待动作实在哪里实现?
是在1440字节截断的
tcp是流式的,一小段一小段传输给服务端的,并且tcp流没有数据边界,不知道哪里是结束,服务端每收到一小段数据后就触发消息事件。这种情况需要有个应用层协议区分tcp流哪里是开始,哪里是结束。例如http应用层协议是在http头部放了一个Content_length:xxx 表示这个包到底有多长,服务端就知道这个包的长度,如果读取的长度不够,就继续等待数据,直到读取足够的长度才触发onMessage事件。worker man支持应用层协议设置,也可以定义自己的应用层协议,可以去看下workerman手册协议部分
用GatewayWorker也会出现这种情况么?那个等待动作实在哪里实现?