9

オークションスクリプトを実行していますが、訪問者とサーバー間の時間同期が必要です(オークションはいつ終了しますか)。ユーザーが入札するたびに、オークションの終了時間が数秒間延長されます。私の問題は、何人かのユーザーがタイマーのスキップ(数秒)について不平を言っていて、それが高遅延接続のためであると理解していることです。

私の現在のアルゴリズムには、毎秒実行されるjavascript関数があり、ajaxリクエストを介してオークションの残り時間を取得します。タイマースキップの問題を防ぐために、特に待ち時間の長いユーザーの場合、これにアプローチするためのより良い方法はありますか?

4

3 に答える 3

2

長いポーリングを調べましたか?jquery / javascriptカウントダウンクロックを使用して、新しい入札が行われるたびにカウントダウン時間を変更することができます。ajax呼び出しを大幅に削減する必要があります。

于 2012-10-09T19:02:18.467 に答える
2

適応間隔

まず、ポーリングの量を減らすことをお勧めします。サーバーの実装についてはわかりませんが、ユーザーが2人いると、現在の設定では多くのリクエストが作成されます。

残り時間に応じてポーリング間隔を調整することをお勧めします。オークションが終了するまであと2時間ある場合、追加の秒数が1分ごとにサーバーから取得されるだけであるかどうかは気にしないかもしれませんね。あなたはこのようにそれを行うことができます

pollingInterval = secondsLeft / 100

間隔は短くなり、結果はオークションの終わりに向かってより正確になります。

サーバー送信イベント

コメントで説明されているように、最後の1分間ほど、高精度が必要な場合は、短い間隔で定期的にポーリングするのは最善の解決策ではありません。ロングポーリングはオプションですが、ロングポーリングのネイティブブラウザ実装のようなHTML5サーバー送信イベントも調べる必要があります。Websocketとの優れた紹介と比較があります。ブラウザのサポートはすでにかなり良好です。サポートされていないブラウザには、ポーリングにフォールバックするポリフィルがあります。

于 2012-10-10T09:10:17.160 に答える
1

毎秒実行されるjavascript関数

これはあなたがやりたいことをするための古い方法です。

すべてのユーザーにリアルタイムで配信するには、Webソケットを使用する必要があると思います。時間を節約したい場合は、自分で作成する代わりに、利用可能な任意のWebSocketサーバーを使用できます。

私はリアルタイムプッシャーが好きです。それは簡単で、無料で使用できますが、ユーザー数は限られています。また、より多くのユーザーのためにアップグレードすることができます。 www.pusher.com

また、必要なものをすばやく簡単に実装するのに役立つ優れたAPIドキュメントを用意してください。

Pusher-or-websocketのヘルプについては、お気軽にお問い合わせください。

于 2012-10-10T08:14:59.727 に答える