14

私は先週 WebSocket を調べていて、Java Servlet API を使用してサーバー側を実装する方法についていくつか考えました。私はあまり時間をかけませんでしたが、Tomcat を使用したいくつかのテスト中に次の問題に遭遇しました。これらの問題は、コンテナーにパッチを適用するか、少なくとも HttpServletResponse 実装にコンテナー固有の変更を加えなければ解決できないようです。

  • WebSocket 仕様では、101 HTTP 応答で定義されたメッセージが義務付けられています。HttpServletResponse.setStatus(int code, String message) は、使用可能な代替品について言及せずに廃止されました。デフォルトの Tomcat 構成を変更した後、Tomcat がメッセージ文字列を尊重するようにしましたが、メソッドが非推奨になっているため、これが他のサーブレット コンテナーで機能するかどうかはわかりません。

  • WebSocket 仕様では、接続アップグレード要求に対する HTTP 応答の最初のいくつかのヘッダーの指定された順序が必要です。サーブレット API は、応答ヘッダーの順序を指定する方法を提供しません。Tomcat は独自のヘッダーを応答に追加し、サーブレット実装によって追加される任意のヘッダーの前にいくつかのヘッダーを配置します。

  • ヘッダーのコミット時に応答のコンテンツの長さが不明であるため、Tomcat は応答のチャンク転送エンコーディングに自動的に切り替えますが、これは WebSocket 仕様と互換性がありません。

明らかな何かが欠けていますか、それとも WebSocket サーバーエンドポイントをサーブレットベースの Web アプリに統合することは本当に不可能ですか?

4

4 に答える 4

8

Jettyに実装があります。tomcat と jetty が互換性のある API を見つけることを期待できます。

于 2010-10-26T20:55:52.400 に答える
6

Glassfish Atmosphereプロジェクトは、あなたが望むことを行います。すべての作業を行うために定義できるサーブレットがあります。

于 2011-05-13T14:42:06.370 に答える
0

jWebSocketTomcat アプリケーションとして実行されると主張しています。残念ながら、 のバイナリ配布にはいくつかのファイルがありませんjWebSocket。ソースコードが公開されているので、再コンパイルjWebSocketして必要なファイルを取得しようとしている人もいます。全体jWebSocketとして、信頼できる製品とは思えません。

于 2012-10-11T13:03:41.223 に答える
-3

はい、非常に優れたものがあります (オープンソースで完全に無料): http://www.jWebSocket.org

于 2010-02-12T16:31:31.943 に答える