我正在尝试使用 NodeJS 创建一个多人游戏,并且我想同步客户端之间的操作。
查找客户端和服务器之间的延迟(请求返回客户端所需的时间)的最佳方法是什么?
我的第一个想法是客户端 #1 可以发送带有 is 请求的时间戳,因此当客户端 #2 收到客户端 #1 的操作时,他将调整 is 操作速度以消除请求的延迟。
但问题是,两个客户端的系统日期时间可能不相同,因此两个客户端不可能知道客户端 #1 请求的卷轴延迟。
另一个解决方案是使用服务器的时间戳,但现在我如何知道客户端的延迟?
读完所有这些答案后...
……我还是不满意。我访问了官方文档,好吧,好吧,好吧 - 解决方案已经内置了。
你只需要实现它 - 看看我的:
Client
// (Connect to socket).
var latency = 0;
socket.on('pong', function(ms) {
latency = ms;
console.log(latency);
});
// Do cool things, knowing the latency...
Server
var server = require('http').Server(app);
// "socket.io": "^1.7.1"
// Set pingInterval to whatever you want - 'pong' gets emitted for you!
var io = require('socket.io')(server, {pingInterval: 5000});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)