【问题标题】:Different client and server time when using Node.js locally在本地使用 Node.js 时客户端和服务器时间不同
【发布时间】:2018-05-09 00:00:42
【问题描述】:

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

【问题讨论】:

  • 有时消息在客户端发送之前就被服务器接收到了不,这是不可能的
  • 不要指望Date.now 是准确的。大多数浏览器会跳过几毫秒...

标签: javascript node.js time websocket


【解决方案1】:

正如 John Resig 所述 in one of his blog articles javascripts 时间不准确。您可以使用 javascript 访问的时钟每隔几毫秒“滴答”一次。这意味着它可能与准确时间相差大约 7 毫秒。现在,如果您的请求比这个小时间跨度更短(如果它停留在 localhost 上可能会发生这种情况),它可能看起来像是在发送之前就已收到。

 real time: 1000ms
 js time: 1000ms

 travel time: 5ms

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

 difference: -2ms

由于安全原因,performance.now() 已被禁用,因此我们无法做任何改进。所以我们唯一能做的就是引入网络延迟:),但是时钟时间可能更差......

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多