2011-11-02 15 views
0

XMLHttpRequestが部分的なコンテンツにアクセスできない場合、どのように長いポーリングが役立つのでしょうか?ロングポーリングはどのように役立ちますか?

クライアントまたはサーバーで待機する場所はありません。レスポンスは完了時にのみ表示されます。したがって、短いポーリングと長いポーリングの両方が同じように見えます。

たとえば、チャットアプリケーションを作成している場合、通常の動的サービスまたはCometサービスのためにGETリクエストを送信できます。結果は同じです。これは、servel finish応答までコンテンツを取得できないためです。

私の間違いはどこですか?

アップデート1

だから、「彗星」概念の唯一の感覚は、(例えば)そのサーブレットであるだけ「はデータ」と言うことはありませんしようと答える前に、できるだけ多くを待つべき?

次にTomcat APIのCometProcessorのようなインターフェースは存在しますか?

答えて

2

新しいチャット・ラインが到着すると、サーバーは長いポーリング要求を完了し、クライアントは新しいチャット・ラインを発行します。したがって、部分的なコンテンツのサポートをシミュレートします。

+0

「短い」投票との違いは何ですか?短い投票で、何度も何度もリクエストを再発行します。 – Dims

+0

@Dims短いポーリングで新しいデータがすぐに返ってくると、クライアントは次回より多くのデータがあることを希望する一定の間隔を待ちます。長いポーリングでは、すべてのデータが待機していなければ、サーバーは接続を開いたままにして、見つかるデータがなくなるまで応答をブロックします。 – bdonlan

+0

さて、ちょうど簡単なアドバイスですが、私はちょうど長いポーリングから何か特別なものを期待していたでしょう。 – Dims

0

長いポーリングでは、サーバは「待機中」を行い、設定するHTTP接続の数を減らします。クライアントからポーリングを開始すると、実際にデータが返されるまで、必要に応じてサーバーが応答を伸ばします。したがって、HTTPリクエストを何度もやり直さなくても、クライアントに負担をかけることはありません。

1

長いポーリングのポイントは、をエミュレートするサーバへのデータのクライアントへのプッシュをエミュレートすることです。エミュレーションを行うのは、サーバーがクライアントからの要求を保持しているため、サーバーが応答するタイミングを決定するということです。実際には完全にではなく、サーバーがデータ転送を制御しているように見えます。実際にデータを適切な意味でプッシュしているわけではないため、長いポーリングはプッシュベースの転送のエミュレーションに過ぎません。

クライアントが応答を受信すると、すぐに別の要求が送信され、サーバーがデータをパイプラインを介して一貫して送信できるようになります。ロングポーリングで

+0

しかし、短いポーリングで別のリクエストを送信しないでください。違いは何ですか? – Dims

+0

違いは、サーバーは短いポーリングで要求を保持せず、すぐに応答することです。 –

0

、サーバーはすぐにそれが(他の回答が言うように、その後、クライアントが別の要求を発行)いくつかのデータを持っているとして完全応答を返します。

この手法は、サーバーが利用可能になった後、クライアントが潜在的にデータを要求する定期的な短時間ポーリングよりも迅速です。

HTH

+0

どちらのポーリングメカニズムでも、以前の応答があった直後にリクエストを再発行します。だから私はイベントで遅刻する機会はありません。 – Dims

+0

であるが、短いポーリングでは、「要求間」、すなわち切断/再接続=>その過程で、若干遅くなる可能性が高くなります。また、オーバーヘッドが増えます。 – laher

+0

TBH私はあなたの誤解を誤解しているかもしれません...おそらくあなたの誤解はこれよりも基本的です。あなたの読んだことは次のようなものです:http://en.wikipedia.org/wiki/Comet_(programming)? – laher

関連する問題