长连接手游 ping 值是怎么实现的?

2017-08-08 15:46:35 +08:00
 imherer

比如王者荣耀右上角有一个实时显示当前延迟的数字,这个是怎么实现的? 客户端不停的像服务器发送请求,服务器收到后返回给客户端,然后客户端拿到服务器的返回后,计算这个时间差吗?

socket.io 有封装好的 api 吗?

4829 次点击
所在节点    程序员
27 条回复
zpf124
2017-08-09 10:26:58 +08:00
socket.io 应该可以尝试去做 一个 类似 大话 梦幻之类的对实时要求不高的游戏。
zpf124
2017-08-09 10:43:18 +08:00
不过我说的好像也不一定对,现在网络基础设施都好不少了, 像 下面这种 的 io 游戏 都是基于 websocket 的。
http://agar.io/
http://slither.io/


而且在国内有服务器的话,应该不会太卡 ,见过人用流量玩贪吃蛇那个,延迟 150ms-200ms 左右。
liuminghao233
2017-08-09 13:00:29 +08:00
@sujin190
参考 12 楼的做法,
测个延迟并不需要两端统一时间
Keyes
2017-08-09 17:41:30 +08:00
Ping/pong 绝对是不二之选
imherer
2017-08-09 17:43:18 +08:00
@Keyes 具体怎么做呢?
tvallday
2017-08-10 01:18:32 +08:00
楼上有些人说的是 NTP,实现的算法看起来很简单,但是由于步骤繁多很容易出错。楼主问的问题其实只涉及到 heartbeat,服务器发送 ping 请求是自动收到 pong 回复的,至少 websocket 是这样。这样的算法就简单很多。在 socket.io 上就更简单了,因为 ping/pong 是自带的。。
wanghe826
2017-08-12 15:33:50 +08:00
ping 使用的是 ICMP 协议, 我这个应用就是基于苹果提供的 API 根据平均时间差来计算 ping 值,楼主可以看看是不是这个样子的? https://itunes.apple.com/us/app/bigvpn/id1225850922?mt=8

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX