正确计算服务器往返的javascript时差

时间:2013-08-27 19:43:37

标签: javascript

试图让游戏处理时间有所不同,但我无法正确地计算数学(我的弱点)。这是我到目前为止所拥有的:

function(timeSentToServer, serverTime) {
    var difference = serverTime-timeSentToServer
    var roundTripTime = Date.now()-timeSentToServer;
    var responseTime = roundTripTime-difference;
    timeDifference = responseTime;
}

timeSentToServer是发送请求时的Date.now()。由于多个请求,这是必需的,并且此功能不在发送请求的函数范围内。 serverTime是服务器收到请求的时间

timeDifference应该是一个值,我可以添加到Date.now()以匹配当前的serverTime(可能只有几毫秒,但这是可以接受的)

然而,我遇到了一个问题,即我测试的一个设备只比服务器提前一秒,而且它会使整个计算失败

例如:currentTime:968952 sentTime:968834 serverTime:967742差异:1210

导致更加领先于服务器。

将Date.now() - 差异成为我正在寻找的解决方案?还有,我可以阅读有关这个​​主题的任何其他文章,以及任何不同的解决方案吗?

0 个答案:

没有答案