多人聊天中发数据的间隔问题

0

在一个客户端中, 测试出来是大于200ms的间隔, 所有数据能处理, 但小于200ms. 数据就无法处理, 到不了onmessage(). 能接收到.

已邀请:

walkor

赞同来自:

没理解你说的问题,请把现象详细将下吧

songzhao831 - 软硬通吃

赞同来自:

就是客户端以100ms为周期, 向服务器端简单循环发数据, , 在onmessage中 将数据返回来, 有很高的几率返回不了.

walkor

赞同来自:

可能是粘包了,可以抓包看下网络上数据是否有发送出去。
处理粘包可以参考workerman手册

songzhao831 - 软硬通吃

赞同来自:

手册我看完了, preread_length = 10 也和包头一样长. 不知道到底为什么会这样子... 如果头解析不对, 我是不是应该返回一个错误. 这样把连接断掉

songzhao831 - 软硬通吃

赞同来自:

给你发个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
)

walkor

赞同来自:

请直接贴
1、你的协议格式
2、Gateway.conf配置
3、onGatewayMessage处理粘包的代码
4、客户端发送的数据
5、还有你的日志打印的代码和格式

songzhao831 - 软硬通吃

赞同来自:

更新了软件后好了.

要回复问题请先登录注册