本地使用Node.js时的客户端和服务器时间不同

时间:2018-05-08 15:43:30

标签: javascript node.js time websocket

我有节点服务器在本地工作,我通过webbrowser连接到这个服务器。我使用websocket进行客户端和服务器之间的通信。我想测量将websocket消息发送到服务器和服务器的准确时间。我使用javascript函数Date.now(),但问题是在我的结果中有时消息是由服务器在客户端发送之前收到的。我猜客户端“时钟”和服务器“时钟”之间存在差异。但是在同一台机器上。 我将非常感谢您的解释和资源链接。

1 个答案:

答案 0 :(得分:1)

正如John Resig概述in one of his blog articles javascripts时间不准确。您只能使用javascript访问的时钟" ticks"每隔几毫秒。这意味着它可以在准确的时间内大约差7毫秒。现在,如果您的请求所需的时间小于这个小的时间跨度(如果它保留在localhost上就会发生),它可能看起来像是在它被发送之前收到的。

 real time: 1000ms
 js time: 1000ms

 travel time: 5ms

 real time: 1005ms
 js time: 998ms // inaccuracy

 difference: -2ms

由于performance.now()因安全原因而被停用,我们无法采取任何措施来改进此问题。所以我们唯一能做的就是引入网络延迟:),但是时钟时间可能更多了......