【问题标题】:Synchronizing client-side and server-side times [duplicate]同步客户端和服务器端时间[重复]
【发布时间】:2012-07-17 11:01:38
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

  • 看起来不错。如果一段时间内没有其他请求,您还可以发出其他请求以更正客户端计时器。
  • 如果您不在乎几秒钟,这种方法可能有什么问题?
  • 我猜没什么!谢谢大家

标签: javascript synchronization client-side clock


【解决方案1】:

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

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

阅读更多关于clock synchronization algorithms on wikipedia

【讨论】:

  • +1,虽然如果 +/- 几秒钟对他来说没问题,他不会关心网络延迟。
  • 我们不知道这是否适合他。无论如何,这很容易解释 - 算法非常简单。
猜你喜欢
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 2022-11-24
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多