服务器上的Date.now()相对于客户端提前?

时间:2014-08-05 23:42:44

标签: javascript node.js socket.io client

以下是我的情况:

我有一个客户端连接到具有Node.js,socket.io。

的服务器

如果我在服务器上计算Date.now(),将其发送到客户端,然后让客户端打印从服务器接收的时间并且它自己的Date.now()我得到一个非常奇怪的结果:服务器时间比客户端时间大514ms。但从逻辑上讲,服务器Date.now()必须在客户端之前发生。

我不明白这里发生了什么。由于时区,服务器是否以不同于客户端的方式计算Date.now()?还有其他事情发生了吗?

1 个答案:

答案 0 :(得分:1)

您所看到的内容称为时钟偏差。像任何时钟一样,计算机内的时钟必须设置为正确的时间,任何两台计算机的时钟都会慢慢分开。因此,几乎可以肯定的是,任何两台计算机都会认为它的时间略有不同。通常情况下,这种差异很小,你没有注意到,但是当你故意进行像你刚才那样的实验时,它可能足够大。