在一个客户端中, 测试出来是大于200ms的间隔, 所有数据能处理, 但小于200ms. 数据就无法处理, 到不了onmessage(). 能接收到.
没理解你说的问题,请把现象详细将下吧
用一个客户端不停地向服务端发数据. 间隔时间小于100ms.
就是客户端以100ms为周期, 向服务器端简单循环发数据, , 在onmessage中 将数据返回来, 有很高的几率返回不了.
可能是粘包了,可以抓包看下网络上数据是否有发送出去。 处理粘包可以参考workerman手册
手册我看完了, preread_length = 10 也和包头一样长. 不知道到底为什么会这样子... 如果头解析不对, 我是不是应该返回一个错误. 这样把连接断掉
给你发个log. 在收到整个数据后,. 应该会进入到onmessage. 但这个收到这么多后才进入一次onmessage. 前面的数据都丢失掉了.
buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done buffer=HEAD#21#cl total_length=21 still need recevie bytes:18 buffer=HEAD#21#client#02#22222#33#| total_length=21 buffer recive done On message: uid=1006message=HEAD#21#client#02#22222#33#|Array ( => 1006 )
请直接贴 1、你的协议格式 2、Gateway.conf配置 3、onGatewayMessage处理粘包的代码 4、客户端发送的数据 5、还有你的日志打印的代码和格式
更新了软件后好了.
没理解你说的问题,请把现象详细将下吧
用一个客户端不停地向服务端发数据. 间隔时间小于100ms.
就是客户端以100ms为周期, 向服务器端简单循环发数据, , 在onmessage中 将数据返回来, 有很高的几率返回不了.
可能是粘包了,可以抓包看下网络上数据是否有发送出去。
处理粘包可以参考workerman手册
手册我看完了, preread_length = 10 也和包头一样长. 不知道到底为什么会这样子... 如果头解析不对, 我是不是应该返回一个错误. 这样把连接断掉
给你发个log. 在收到整个数据后,. 应该会进入到onmessage. 但这个收到这么多后才进入一次onmessage. 前面的数据都丢失掉了.
请直接贴
1、你的协议格式
2、Gateway.conf配置
3、onGatewayMessage处理粘包的代码
4、客户端发送的数据
5、还有你的日志打印的代码和格式
更新了软件后好了.