2015-09-25 13 views
5

Ich habe keine Lösung dafür gefunden. Es scheint, Jetty unterstützt diese Funktion noch nicht. Ich könnte mich irren, bitte, erleuchte mich.Konfigurieren von Jetty WebSocket Client zur Verwendung von Proxy

Ich habe einen sehr einfachen Java Client, der an einen Java Server an localhost:8080 anschließt. Ich möchte einen transparenten Proxy zwischen ihnen hinzufügen, um zu simulieren, was wir im privaten Netzwerk eines Unternehmens finden könnten.

+0

ein Java-Client von was? Welche Art von Proxy? http/1.1? http/2? Websocket über http/1.1? Websocket über http/2? transparent? umkehren? Serverseite? Kundenseite? –

+0

Ein WebSocket-Java-Client mit Jetty. Siehe Titel. Derzeit verwende ich HTTP/1.1, aber ich sehe nicht, wie es mein Problem beeinflussen würde. Für den Moment möchte ich nur einen transparenten Proxy einrichten. –

+0

Upvoting. In ihrem aktuellen Zustand bringt diese Frage wertvolle Antworten. –

Antwort

5

Update: Mai 2017

Ab Jetty 9.4.0 und ab, die native Jetty WebSocketClient unterstützt Proxies über die Anlegestelle Httpclient.

Dies funktioniert, indem ein HttpClient zusammen mit seinen Proxy-Konfigurationen deklariert und dann an the WebSocketClient constructor übergeben wird.

Dies funktioniert nur mit den folgenden:

  • HTTP/1.1 Upgrade auf WebSocket
  • india Jetty WebSocket APIs

Dies gilt nicht Arbeit mit den folgenden:

  • HTTP/2 (es gibt keine Spezifikation für WebSocket über HTTP/2 als von noch)
  • JSR356 javax.websocket (es gibt Ideen für API-Änderungen an den JSR356 ClientContainer brechen zu ermöglichen in einer Anlegestelle vorbei Httpclient über einen Konstruktor, lassen Sie uns wissen, ob dies ist praktikable Option für Sie von filing a new issue on github sagen so)

Original-Antwort

mit Steg 9, gibt es keine Proxy-Unterstützung für entweder die Jetty india WebSocket-Client oder die JSR-356 (javax.websocket) Client-Implementierung.

Diese Unterstützung für Landungssteg 10 vorgesehen (die 4 Servlet-Tracking ist) und in einer kompletten Überarbeitung der gesamten Client-Bibliothek Suite in Anlegestelle führt für gleiche Unterstützung hat:

  • HTTP/1.1
  • HTTP/2 (native/direkt)
  • HTTP/1.1 Upgrade auf HTTP/2 (h2c)
  • HTTP/1.1 Upgrade auf WebSocket
  • HTTP/2 websocket Kanal (derzeit im Entwurfsdaten)
  • Proxy-Unterstützung
  • Cookie-Unterstützung
  • etc ...

Die bestehenden WebSocket-Client-Implementierungen auf Jetty sind eigenständige, aufgrund der JSR-356-Support-Anforderungen.

Der vorhandene WebSocket-Client nutzt den vorhandenen Jetty HttpClient in Jetty 9.x nicht.Wenn dies der Fall wäre, könnte die Proxy-Unterstützung möglicherweise unter einer sehr begrenzten Anzahl von Szenarien funktionieren.

Dies ist eine Featureanforderung mit niedriger Priorität, da es nur wenige vorhandene Proxies gibt, die WebSocket bisher unterstützen (tatsächlich haben sie generell eine schlechte Unterstützung für das HTTP/1.1-Upgrade). Selbst Jettys eigener Serverseite-Proxy unterstützt derzeit keine HTTP/1.1-aufgerüsteten Verbindungen.

+0

Bedeutet das, dass ich immer noch Nachrichten an einen entfernten Proxy senden kann, aber nicht selbst mit Jetty? Danke für die ausführliche Antwort. –

2

Gemäß 2 in How HTML5 Web Sockets Interact With Proxy Servers, wenn Sie einen transparent Proxy verwenden möchten, müssen Sie keine Proxy-Unterstützung auf der Clientseite erfordert. Auf der anderen Seite erfordert ein Proxy explizite Client-Bibliotheken, Proxy zu unterstützen.

Jetty WebSocket-Client wird kein Problem haben, wenn Ihr Proxy transparent ist.

Verwandte Themen