サーバー上の時間に基づくカウントダウン タイマーを作成しようとしています。
私はもともとサーバーに残り時間を設定させていましたが、setTimeout
時間を減らすために1秒間実行しました。
これには2つの問題が見つかりました:
- クライアントのページがレンダリングされて JavaScript の実行が開始されるまで、サーバーが時間を設定するための遅延があります。ラグの量は、ユーザーのインターネット接続とコンピューター/JavaScript エンジンの速度によって異なります。
setTimeout
低速のコンピューターでは 1 秒が少し遅れている可能性があると思います。
サーバーが終了時刻を設定し、クライアントの JavaScript が時刻 (UTC) を取り、残り時間を計算するように変更しました。setTimeout
その後、すべてのコールバックでこれを行います。これにより、時間とカウントダウンが完璧になります。クライアントが高速なコンピューター/JavaScript エンジンを持っている場合、タイマーはページにとどまります。コンピューター/JavaScript エンジンが遅い場合、1 秒があちこちでスキップされることがありますが、時間がずれることはありません。
これまでのところ、この方法で 1 つの問題が見つかりました。
- すべてのクライアントの時計は異なる場合があります。
そのため、残りの時間は数秒、または 30 秒、またはクライアントのコンピューターの時刻が正しくない場合は何日もかかる場合があります。
サーバーの終了日に基づいて残り時間を正確にする方法はありますか?