2

ユーザーがアクションを実行するまでの残り時間のカウントダウンを表示するアプリケーションがあります。時間はタスクごとではなく、実際のタイムスタンプまでです。

たとえば、ユーザーは今日の 17:58:32 UTC+0 より前に単純なアクションを実行する必要があります。

サーバーからアクションと終了時間を取得してから、カウントダウンの表示に進みます。空の Date() オブジェクトを (現在のユーザーの時間を取得するために) 作成し、終了時間から差し引いて、カウントダウンを表示します。

しかし、ここで問題が発生します。ユーザーのコンピューターの時間が大幅にずれている場合、この差はさらに大きくなります。サーバーからの終了時刻は世界時と同期しています。現在時刻は、ユーザーのマシンに描画されていない場合があります。

最初に考えるべきことは、サーバーからも現在の時刻を送信することです。しかし、それは正確に最新のものではありません。サーバー上で生成されてから、使用するまでに 1、2、3 秒も経過する場合があります。インターネット接続が遅い、javascript 実行スタック (プラグイン、ユーザースクリプト) が詰まっているなど。そして、私のアプリケーションでは数秒が重要です。

JavaScriptで実際の普遍的な値の時間を同期させるためにできることはありますか?

4

1 に答える 1

1

それらを正確に取得することは決してありませんが、現在の時刻にサーバーにいくつかの要求を行い、クライアントクロックから平均オフセットを取得した後、近づくことができると思います。

ご指摘のとおり、この方法は完璧ではありませんが、おそらく可能な限り近いものです。

于 2012-06-13T17:44:05.530 に答える