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

songzhao831

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

3760 7 0
7个回答

walkor

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

  • songzhao831 2014-09-25

    用一个客户端不停地向服务端发数据. 间隔时间小于100ms.

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

更新了软件后好了.

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