2012-07-17 102 views
2

我有一個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

回答

9

您需要考慮網絡延遲。您的服務器中的數據不會立即傳達給您。我建議使用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