2013-02-04 67 views
1

首先我會解釋我的問題: 我有一個node.js服務器和大量的通過socket.io接收事件的JS客戶端。 Web應用程序向node.js服務器發送結束日期(時間戳),node.js將此時間戳廣播給所有客戶端。然後客戶端從現在開始計時到指定的日期...確保最準確的同步

我的問題: 我的客戶想要一個完全同步的應用程序,因此每個客戶端必須在每個時刻都有相同的計時器計數......但是, t有相同的當前日期,所以有不同的計時器計數。

我的第一個解決方案: 我的網絡應用發送每個請求的當前時間戳,所以node.js廣播這個時間戳。然後,每個客戶端將他當前的時間戳與服務器的時間戳進行比較,並將差異應用到他的計時器中...

結果: 它更好但不完美。有些定時器不同步(由於請求延遲在我看來),我看到一些毫秒(不到一秒)的差異。

那麼,你有提案來改進計時器嗎?

感謝每一個。

回答

1

由於網絡中節點之間的不可知的傳輸延遲,分組交換網絡上的時間同步是一個難題。我的建議是:不要試圖自己解決這個問題。只需要服務器和所有客戶端都運行NTP並提供良好的配置,使他們能夠同步時間和良好的可靠來源。讓NTP擔心這個問題。

+0

謝謝,我害怕沒有其他答案...:P – PedroTroller