AJAXの場合、SSEはパブリッシュ・サブスクライブ・モデルであり、一定のポーリングとは対照的です。
一般に、両方の方法(ポーリングとパブリッシュサブスクライブ)は、クライアント上で最新の状態を維持する方法の問題を解決しようとしています。
1)ポーリングモデル
これは簡単です。クライアント(ブラウザ)は最初に初期状態(ページ)を取得し、更新するために、定期的に状態(ページまたはその一部)を要求し、結果を現在の状態に処理する必要があります(ページ全体をリフレッシュするか、 AJAXの場合は一部)。
もちろん、サーバの状態が何も起こらなければ、リソース(CPU、ネットワーク、...)が不必要に使用されるという欠点があります。もう1つは、状態が変わったとしても、クライアントはただちに次のポーリング期間に取得することです。しばしば、2つの事の間の良好な期間の妥協を評価する必要がある。
ポーリングの別の例は、スレッド化のスピンウェイトです。
2)パブリッシュ・サブスクライブ・モデル
それは次のように動作します(クライアント最初の要求
- といくつかの初期状態を示している)
- クライアントがサーバに加入するには、(おそらくと、一つのリクエストを送信します
- サーバはクライアントへの参照をクライアント参照リポジトリにマークします
- 状態の更新の場合se rverは、保持しているクライアントへの参照に基づいてクライアントに通知を送信します。すなわち、それは、要求に対する応答が、
- 良いクライアントは別として、彼らは
通知の中に、より興味を持っているとき、これはSSEされていない、または待機可能イベントをスレッド内の退会、サーバによって開始されたメッセージではありません例。 前述したように、自然な欠点は、実装に応じて問題が発生する可能性のある、登録されているすべてのクライアントについてサーバーが知っていなければならないことです。