2015-09-25 13 views
5

私はこれに関する解決策を見つけませんでした。 Jettyはまだこの機能をサポートしていないようです。私は間違っているかもしれないので、私を教えてください。プロキシを使用するようにJetty WebSocketクライアントを設定する

私は非常に単純なJavaクライアントを持っており、Javaサーバに接続しています。localhost:8080です。企業のプライベートネットワークで何が見つかるかをシミュレートするために、それらの間に透過的なプロキシを追加したいと思います。

+0

何のJavaクライアントですか?どのようなプロキシ? http/1.1? http/2? http/1.1上のwebsocket? http/2上のWebSocket?トランスペアレント?逆?サーバ側?クライアント側? –

+0

Jettyを使用したWebSocket Javaクライアント。タイトルを参照してください。現在HTTP/1.1を使用していますが、私の問題にどう影響するかわかりません。今のところ、私は透明なプロキシをセットアップしたいだけです。 –

+0

Upvoting。現在の状態では、この質問は貴重な答えをもたらします。 –

答えて

5

更新日:月、2017

突堤9.4.0以降以降、ネイティブ桟橋WebSocketClientは桟橋HttpClientを介して、プロキシをサポートしています。

これは、HttpClientをそのプロキシ構成とともに宣言し、それをthe WebSocketClient constructorに渡して使用することによって機能します。

にのみ、以下で動作します:

    :これは、次のと ない仕事をするのWebSocket
  • ネイティブ桟橋のWebSocket APIの

  • HTTP/1.1のアップグレード
  • HTTP/2(WebSocket over HTTP/2の仕様はありません。まだ)
  • JSR356 javax.websocket(コンストラクタを介して突堤でのHttpClientを渡しできるように、JSR356 ClientContainerへの変更を壊すAPIのためのアイデアがあり、これがそう言っfiling a new issue on githubによってあなたのための現実的な選択肢である場合はお知らせ)
  • 桟橋9で

オリジナル回答

、桟橋ネイティブのWebSocketクライアント、またはJSR-356(javax.websocket)クライアントの実装のいずれかのためのプロキシのサポートはありません。

このサポートは、(サーブレット4を追跡している)桟橋10に予定され、そしてに対して等しいサポートを有するように桟橋全体クライアントライブラリスイートの完全な再加工をもたらすであろう。

  • HTTP/1.1
  • HTTP/2(ネイティブ/ダイレクト)
  • HTTP HTTP/2(H 2 C)へ/ 1.1アップグレードのWebSocket
  • HTTP/2のWebSocketチャンネルへ
  • がHTTP/1.1アップグレード
  • 0(現在のドラフト仕様で)
  • プロキシサポート
  • Cookieのサポート
  • 等...

桟橋上の既存のWebSocketクライアント実装が原因JSR-356のサポート要件に、スタンドアロンのです。

既存のWebSocketクライアントは、既存のJetty HttpClientをJetty 9.xに利用しません。それができれば、プロキシサポートは、おそらく非常に限られたシナリオのセットの下で動作する可能性があります。

WebSocketをサポートしている既存のプロキシがほとんど存在しないため(実際には、HTTP/1.1のアップグレードがサポートされていません)、これは優先度の低い機能リクエストです。 Jetty独自のサーバー側のプロキシでも、現在HTTP/1.1のアップグレードされた接続はサポートされていません。あなたは透明プロキシを使用しようとしている場合

+0

これは遠いプロキシにメッセージを送信できますが、Jettyで自分自身を作成し​​ないということですか?詳細な答えをありがとう。 –

2

How HTML5 Web Sockets Interact With Proxy Serversで、図2によると、あなたは、クライアント側のプロキシサポートを必要とする必要はありません。一方、明示的プロキシでは、プロキシをサポートするためにクライアントライブラリが必要です。

プロキシが透過的であれば、Jetty WebSocketクライアントは問題ありません。

関連する問題