2015-09-25 13 views
5

Non ho trovato alcuna soluzione a riguardo. Sembra che Jetty non supporti ancora questa funzione. Potrei sbagliarmi quindi per favore, illuminami.Configurazione del client Jetty WebSocket per utilizzare il proxy

Ho un client Java molto semplice che si connette a un server Java a localhost:8080. Vorrei aggiungere un proxy trasparente tra loro al fine di simulare ciò che potremmo trovare nella rete privata di un'azienda.

+0

un client java di cosa? che tipo di proxy? http/1.1? http/2? websocket su http/1.1? websocket su http/2? trasparente? inverso? lato server? dalla parte del cliente? –

+0

Un client Java WebSocket che utilizza Jetty. Vedi il titolo. Attualmente sto usando HTTP/1.1 ma non vedo come potrebbe influenzare il mio problema. Per ora voglio solo configurare un proxy trasparente. –

+0

Upvoting. Nel suo stato attuale, questa domanda porta risposte preziose. –

risposta

5

Aggiornamento: maggio 2017

A partire dal Jetty 9.4.0 in poi, il nativo Jetty WebSocketClient supporta proxy tramite il molo HttpClient.

Ciò funziona dichiarando un HttpClient, insieme alle sue configurazioni proxy, e quindi passandolo a the WebSocketClient constructor da utilizzare.

Questo funziona solo con il seguente:

  • HTTP/aggiornamento 1.1 per WebSocket
  • nativi Jetty websocket API

Questo fa non lavoro con il seguente:

  • HTTP/2 (non ci sono specifiche per WebSocket su HTTP/2 come dell'ennesima)
  • JSR356 javax.websocket (ci sono idee per API rottura modifiche al JSR356 ClientContainer per consentire il passaggio in un molo HttpClient tramite un costruttore, di farci sapere se questa è valida opzione per voi da filing a new issue on github dirlo)

risposta originale

con molo 9, non c'è alcun supporto proxy per il client nativo Jetty WebSocket, o il client di attuazione JSR-356 (javax.websocket).

Questo supporto è prevista per il Molo 10 (che è rintracciando Servlet 4), e si tradurrà in una rielaborazione completa di tutta la suite libreria client in Jetty di avere uguale supporto per:

  • HTTP/1.1
  • HTTP/2 (nativo/diretta)
  • HTTP/1.1 di aggiornamento per HTTP/2 (H2C)
  • HTTP/1.1 aggiornamento a WebSocket
  • HTTP/2 websocket canale (attualmente in bozza spec)
  • Proxy sostegno
  • Supporto cookie
  • ecc ...

Le attuali implementazioni client WebSocket sul Molo sono autonomo, a causa dei requisiti di supporto JSR-356.

Il client WebSocket esistente non utilizza il Jetty HttpClient esistente in Jetty 9.x.Se lo facesse allora il supporto proxy potrebbe, forse, sotto una serie molto limitata di scenari, lavorare.

Questa è una richiesta di funzionalità a bassa priorità, in quanto vi sono pochi proxy esistenti là fuori che supportano WebSocket finora (in realtà, hanno generalmente un cattivo supporto per l'aggiornamento HTTP/1.1). Persino il proxy lato server di Jetty attualmente non supporta connessioni aggiornate a HTTP/1.1.

+0

Ciò significa che posso ancora inviare messaggi a un proxy remoto ma non crearne uno io stesso con Jetty? Grazie per la risposta dettagliata. –

2

Secondo la Figura 2 in How HTML5 Web Sockets Interact With Proxy Servers, se si tenta di utilizzare un trasparente delega , non si dispone di richiedere un supporto proxy sul lato client. D'altra parte, un proxy 10 richiede che le librerie client supportino il proxy.

Il client Jetty WebSocket non presenterà alcun problema se il proxy è trasparente.

Problemi correlati