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

时间:2012-07-17 11:01:39

标签: javascript synchronization client-side clock

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

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:9)

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

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