Hello 又是我,
背景是这样的,
上回书说到和小伙伴一起做了一个 1v1 小游戏,目前已经在小群体发布了,目前平均每小时也有 3-4 人在线对战了。然后有玩家反应在用蜂窝网络的时候,特别是地铁上,会遇到断线的问题。
服务端对此表现为 socket.poll(read)成功后 socket.available 返回 0,或者 socket.poll(Write)返回 false
基于此小弟要做一个断线重连的机制,问题就来了,目前游戏是 UDP,TCP 双轨制,这是当时一拍脑袋的想法,因为基于状态同步的状态想通过 tcp 发送,但是对客户端每秒采样的移动速度和位置(大概 10-15HZ 频率)采用了 UDP 来发送。
断线重连时目前的想法是要同时判断 socket 是否联通,以及客户端的新的 ip endpoint 是否能回应 UDP 的响应。
然后问题来了, 团队里一直有声音说要弃用 TCP,简单在上层封装一个可靠点的 UDP,这样尤其是在断线重连时要做的逻辑少很多,暂且不说可靠点的 UDP 的工作量的问题,一直听说国内网络运营商对 UDP 包不怎么待见,但是一直不知道是为啥,能请各位说一下网络上盛传已久的国内的 UDP 环境不好的原因是什么么?
当然如果仅仅是个传言(谣言),那就再好不过了。
感谢, zhuzhu