node.js - 确保最准确的同步

标签 node.js timer synchronization timestamp

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

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

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

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

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

谢谢大家。

最佳答案

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

关于node.js - 确保最准确的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690841/

相关文章:

C++ 后台计时器

c++ - 多线程黑客

java - 在字符串方法参数上同步 java 中的 io 操作?

C套接字,第一个连接的线程关闭剩余的

javascript - 带有动画轮子的计时器和屏幕锁定时出现的错误

javascript - Node - 在继续之前等待 map 完成

node.js - 允许 swagger 查询参数为字符串或整数数组

javascript - 在 Mongoose 中加载后更改模型值

javascript - ASP.NET 计时器 + 更新面板 : How do I stop the event from continually registering?

javascript - 理解 React JS 中的 .env 文件和环境变量