Webサーバーは着信HTTPリクエストに応答して動作します...リクエストを処理してHTTPレスポンスを返します。サーバーがこのアーキテクチャのクライアントにデータをプッシュできる一般的な方法はありますか...たとえば、リクエストがclient1から着信し、サーバーがclient2に通知したい場合はどうでしょうか。明らかに、ソケットを使用して非Webサーバーで実行できますが、ページ要求をサポートし、データのプッシュを許可する必要があるWebサーバーアプリについてはどうでしょうか。
4 に答える
ページリクエストをサポートし、データのプッシュを許可する必要があるWebサーバーアプリについてはどうでしょうか。
サーブレット3.0では、Cometスタイルのアプリケーション(つまり、長寿命のHTTP接続と長いポーリングまたはストリーミングのいずれかを使用するアプリケーション)を作成できる非同期サポートが導入されています。
サーブレット3.0非同期サポートを待つことができず、コンテナー(GlassFish、Jettyなど)からの独自のCometまたはWebSocketサポートを使用したくない場合は、Atmosphereを参照してください。
も参照してください
もう1つの可能性は、これを実現するためにHTTPキープアライブを悪用することです。背景については、http://en.wikipedia.org/wiki/HTTP_persistent_connectionを参照してください。シナリオではclient2
、サーバーへの接続を開始し、サーバーは通知をリッスンして開いたままになります。
これは優れたソリューションではありません。まず、長期間有効なTCP接続を多数保持する必要があります。接続が失われた場合、サーバーを再接続する方法はありません。クライアントが戻るのを待つ必要があります。
いいえ、クライアント側の技術(Flash、Silverlight、アプレットなど)がないわけではありません。
ただし、ページにAJAXを使用してサーバーをポーリングさせることもできます。