客户端和服务器端时间同步

5
我有一个web服务,收集实时市场数据并在网页前端显示。我的前端(jQuery)需要显示一个时钟,与服务器时钟大致同步(误差几秒钟没问题)。我考虑在客户端加载时,除了提供其他数据外,还提供一个UTC时间戳。然后我会启动一个定时器,每秒钟增加一次显示的时钟。这是一个好方法,还是使用时间服务器更好?谢谢!

1
看起来不错。如果一段时间内没有其他请求,您还可以发出附加请求以更正客户端计时器。 - Pavel Reznikov
如果您不介意几秒钟的时间,这种方法有什么问题吗? - Bergi
我猜什么都没有!谢谢大家。 - user1094786
1个回答

13
您需要考虑网络延迟。来自您服务器的数据不会立即到达您手中。我建议使用Cristian算法进行操作:
  1. 客户端记录当前客户端时间(T1)并向服务器发送请求。
  2. 服务器将其时间(T2)发送给客户端。
  3. 客户端接收服务器答复并再次标记其当前时间(T3)。
  4. T3 - T1是需要到达服务器和返回所需的总请求时间(RTT)。现在我们可以假设从服务器到客户端需要大约一半的时间。 因此,您的“正确”时间为T2 +(T3-T1)/ 2
阅读有关时钟同步算法的维基百科更多信息。

+1,虽然如果有几秒钟的偏差对他来说没关系,但他不会忽略网络延迟。 - Bergi
我们不知道他是否满意。无论如何,很容易解决 - 算法非常简单。 - Dmitry Osinovskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接