5

リアルタイムの市場データを収集してWebフロントエンドに表示するWebサービスがあります。

私のフロントエンド(jQuery)は、サーバーの時計とある程度同期した時計を表示する必要があります(+-数秒で十分です)。

クライアントがロードするときにサーバーが提供する残りのデータと一緒にUTCタイムスタンプを配信することを考えていました。

次に、タイマーを開始し、1秒ごとに表示された時計をインクリメントします。

これは良いアプローチですか、それともタイムサーバーを使用する方が良いですか?

ありがとう!

4

1 に答える 1

12

ネットワーク遅延を考慮する必要があります。サーバーからのデータがすぐに届くことはありません。クリスティアンアルゴリズムを使用してそれを行うことをお勧めします:

  1. クライアントは現在のクライアント時間(T1)をマークし、サーバーに要求を送信します。
  2. サーバーはそれに時間(T2)をクライアントに送信します。
  3. クライアントはサーバーの応答を受信し、現在の時刻を再度マークします(T3)。
  4. T3-T1は、サーバーに移動して戻る(RTT)ために必要な合計時間の要求です。これで、サーバーからクライアントへの移動にかかる時間の約半分が想定できます。したがって、「正しい」時間はT2 +(T3-T1)/2です。

ウィキペディアでクロック同期アルゴリズムの詳細を読む

于 2012-07-17T11:24:44.527 に答える