我有节点服务器在本地工作,我通过webbrowser连接到这个服务器。我使用websocket进行客户端和服务器之间的通信。我想测量将websocket消息发送到服务器和服务器的准确时间。我使用javascript函数Date.now(),但问题是在我的结果中有时消息是由服务器在客户端发送之前收到的。我猜客户端“时钟”和服务器“时钟”之间存在差异。但是在同一台机器上。 我将非常感谢您的解释和资源链接。
答案 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()
因安全原因而被停用,我们无法采取任何措施来改进此问题。所以我们唯一能做的就是引入网络延迟:),但是时钟时间可能更多了......