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

问题描述:

我有一个webservices收集实时市场数据并将其显示在Web前端。同步客户端和服务器端时间

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

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

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

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

谢谢!

+1

看起来不错。如果有一段时间没有其他请求,您也可以提出更多的请求来纠正客户端定时器。 – 2012-07-17 11:08:08

+0

如果你不在乎几秒钟,这种方法会出现什么问题? – Bergi 2012-07-17 11:33:44

+0

我猜不出什么!感谢人们 – user1094786 2012-07-17 12:26:43

您需要考虑网络延迟。您的服务器中的数据不会立即传达给您。我建议使用Cristian algorithm

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

了解更多关于clock synchronization algorithms on wikipedia

+0

+1,但如果他+/-几秒钟就好了,他不会在意网络延迟。 – Bergi 2012-07-17 11:30:56

+0

我们不知道他是否适合。无论如何,这很容易解释它 - 算法非常简单。 – 2012-07-17 11:35:01