1

誰かがajax-pushとは何かを説明できますか?私が理解していることから、HTTP接続を長時間開いたままにし、必要に応じて再接続する必要があります。チャットシステムでよく使われているようです。

また、Javaでajax-pushを使用する場合、NIO-connetorsまたはgrizzle serlvetapiで何かを使用することが重要だと聞きました。繰り返しますが、私はそれが正確に何であるかを研究しているだけです。

4

1 に答える 1

4

通常の AJAX (プルと呼びます) では、サーバーに何かを要求すると、すぐに取得されます。サーバーからデータをすぐに取得したい場合は、これで問題ありません。しかし、サーバーで何かが発生し、サーバーがそのイベントをクライアントにプッシュしたい場合はどうなるでしょうか?

技術的には、これはいわゆるロング ポーリングを使用して実装されます。ブラウザは HTTP 接続を開き、応答を待ちます。サーバー側に何も興味がない限り、それは待機します。しかし、何かが起こると、サーバーは応答を送信し、クライアントはそれをすぐに受け取ります。これは、数秒ごとにサーバーに問い合わせる通常のポーリングよりも大きな利点です。大量のトラフィックが生成され、それでも顕著な遅延が発生します。

このアプローチの唯一の問題は、保留中の HTTP 接続の数です。古い学校の Java サーブレット コンテナは、接続ごとに 1 つのスレッドという制限があるため、そのような量の接続を処理する能力がありません。すぐにメモリ不足になります。HTTP スレッドは何もしていませんが (システムの他の部分が起動して応答を返すのを待っています)、メモリを占有しています。

ただし、今日では多くのソリューションがあります。

  • Tomcat NIO コネクタ

  • Atmosphere Ajax Push/Comet ライブラリ

  • Servlet 3.0 @Async(移植性が最も高い)

  • コンテナー固有の機能ですが、サーブレット 3.0 が利用可能な場合は、優れていると見なす必要があります。

于 2011-08-11T19:08:08.837 に答える