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

Synchronizing client-side and server-side times

本文关键字:时间 服务器端 客户端 同步      更新时间:2023-11-01

我有一个web服务,可以收集实时市场数据并将其显示在web前端。

我的前端(jQuery)需要显示一个时钟,与服务器时钟有些同步(+-几秒钟就可以了)。

我想在客户端加载时,将UTC时间戳与服务器提供的其余数据一起提供。

然后,我会启动一个计时器,每隔1秒就会增加显示的时钟。

这是一个好方法还是使用时间服务器更好?

谢谢!

您需要考虑网络延迟。来自服务器的数据不会立即到达您的手中。我建议使用克里斯蒂安算法:

  1. 客户端标记当前客户端时间(T1)并向服务器发送请求
  2. 服务器向客户端发送时间(T2)
  3. 客户端接收服务器的应答并再次标记其当前时间(T3)
  4. T3-T1是往返服务器(RTT)所需的总时间请求。现在我们可以假设,从服务器到客户端大约需要一半的时间。所以,你的"正确"时间是T2+(T3-T1)/2

在wikipedia 上阅读更多关于时钟同步算法的信息