1

質問に答えているSOのように、誰かがその質問に答えた場合、通知が表示されます(AJAX経由?)。これをいくらか複製する唯一の方法は、n 秒ごとに更新がある場合に取得するスクリプトにタイムアウトを含めることです。PHP + Javascript (w/jQuery) でオブザーバー パターンを使用してこれを行う方法はありますか?

4

2 に答える 2

2

ReverseAJAXまたはCOMETの方法論を調べる必要があります。

ウィキペディアによると

リバース Ajax は、長寿命の HTTP 接続を使用して Web サーバーとブラウザー間の低レイテンシー通信を可能にする Ajax デザイン パターンを指します。基本的には、クライアントからサーバーにデータを送信する方法であり、サーバー データをブラウザにプッシュするメカニズムです。

編集:

次のアプローチを実装することをお勧めします。これは実装が簡単です。例としてスタックオーバーフローの回答を取り上げます。

  1. 回答ページの読み込みが完了した後。AJAX リクエストを開始します (非同期であるため、UI をブロックしません)
  2. そして、サーバー側で新しい更新を探します(DBをポーリングして、新しい回答が追加されたかどうかを確認します)
  3. 更新がある場合は、ブラウザにのみデータを返します。そうでなければ落ち着いてください。
  4. データをクライアントに返した後、クライアントは別の AJAX リクエストを呼び出して更新を待つ必要があります。
  5. 残りのページ存続時間について、ステップ 2 から 4 を繰り返します。

お役に立てれば。

于 2009-10-27T07:55:31.793 に答える
0

タイムアウトを使用してサーバーに更新を問い合わせる場合でも、オブザーバー パターンの特異な実装と見なされる可能性があります。残念ながら、その逆は不可能です。サーバーがメインの HTTP リクエストへの応答を終了すると、クライアントはその「リッスン」を終了します。これを行う唯一の方法は、クライアントから非同期リクエストを行うことです。

于 2009-10-27T07:12:02.317 に答える