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

use*_*786 3 javascript synchronization clock client-side

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

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

我想在客户端加载时提供服务器提供的其余数据的UTC时间戳.

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

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

谢谢!

Dmi*_*kiy 10

您需要考虑网络延迟.您服务器上的数据无法立即与您联系.我建议使用Cristian算法:

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

阅读更多关于维基百科上的时钟同步算法的信息