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
1
terrytw 2020-06-25 18:50:36 +08:00
三家都针对 UDP 流量有明显的 QOS
电信和联通较为保守 移动大概做了个白名单,不在名单里的 UDP 流量有时候都直接给你全丢了 |
2
GreatHumorist 2020-06-25 19:06:05 +08:00
什么架构? C/S 还是 P2P?
|
3
Zhuzhuchenyan OP @GreatHumorist C/S
|
4
Zhuzhuchenyan OP @terrytw 好的,也就是说实际效果还要根据使用时段不同,或者是地域不同还会有差别。有的时段非常好,有的时段就会很差?
|
5
Zhuzhuchenyan OP 仔细想了想,这个问题是个伪问题。
既然担心 udp 丢包那么从一开始就不应该用,毕竟移动数据丢了,光有状态数据,这个游戏也根本完不成。 |
6
Kaiyuan 2020-06-25 20:17:20 +08:00
我倒是想知道省内隧道里面是不是也有限制,我用隧道组网打算连两个地方的监控,但是会隔秒限速。
|
7
opengps 2020-06-25 20:18:35 +08:00
udp 感觉不谈重用,是否发送成功全靠设计响应包进行的回复
既然已经用了 tcp,何不将 tcp 的改进的健壮一点,直接公用 |
8
cheng6563 2020-06-25 21:53:07 +08:00 via Android
??一般不是就是为了能自己设计断线重发机制才会用 udp 吗?
|
9
terrytw 2020-06-26 10:26:37 +08:00
@Zhuzhuchenyan 这就跟墙一样,到底他们规则如何谁也说不清,只能通过使用中的感受摸索总结规律
我总结的规律就是上面说到的那些了 |
10
Zhuzhuchenyan OP @terrytw 好的,目前已经决定全部流量走 tcp 了(捂脸)
|
11
x1911 2020-08-02 09:33:44 +08:00
晕,最近正装备上 udp 解决延迟问题,因为实在 tcp 卡顿和掉 ping 在晚上太严重
|