1

首先,我将解释我的问题:我有一个 node.js 服务器和许多通过 socket.io 接收事件的 JS 客户端。Web 应用程序将结束日期(时间戳)发送到 node.js 服务器,并且 node.js 将此时间戳广播给所有客户端。然后客户从现在到给定日期启动一个计时器......

我的问题:我的客户想要一个完全同步的应用程序,因此每个客户端在每个时刻都必须具有相同的计时器计数......但是每个客户端没有相同的当前日期,因此存在不同的计时器计数。

我的第一个解决方案:我的网络应用程序随每个请求发送他当前的时间戳,因此 node.js 广播这个时间戳。然后,每个客户端将他当前的时间戳与服务器的时间戳进行比较,并将差异应用于他的计时器......

结果:更好但并不完美。一些计时器不是同步的(由于我认为请求延迟),我看到了一些毫秒(不到一秒)的差异。

那么,您有改进计时器的建议吗?

谢谢大家。

4

1 回答 1

1

由于网络中节点之间的传输延迟不可知,分组交换网络上的时间同步是一个难题。我的建议是:不要试图自己解决这个问题。只需要求服务器和所有客户端都运行具有良好配置的 NTP,使它们能够与良好可靠的来源同步时间。让 NTP 担心这个问题。

于 2013-02-04T18:20:02.873 回答