试图为游戏处理时间差异,但我无法正确计算数学(我的弱点)。继承人我到目前为止:
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 匹配的值(可能关闭几毫秒,但这是可以接受的)
但是,我遇到了一个问题,即我测试的一台设备仅比服务器提前一秒,并且它使整个计算失控
例如:当前时间:968952 发送时间:968834 服务器时间:967742 差异:1210
这导致更领先于服务器。
Date.now()-difference 会是我正在寻找的解决方案吗?另外,我还可以阅读有关该主题的其他文章以及任何不同的解决方案吗?