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