Gorilla WebSocket: configura Dialer.Proxy per HTTP CONNECT
Configura Dialer.Proxy per un proxy HTTP forward invece di trattare un indirizzo TCP alternativo come un tunnel proxy completato.
Per un proxy HTTP forward, configura Dialer.Proxy di Gorilla. L'URL WebSocket resta la destinazione:
proxyURL, err := url.Parse("http://proxy.example:8080")
if err != nil {
return err
}
dialer := websocket.Dialer{
Proxy: http.ProxyURL(proxyURL),
HandshakeTimeout: 15 * time.Second,
}
conn, response, err := dialer.DialContext(
ctx, "wss://events.example/stream", nil)
Questo frammento appartiene alla funzione di connessione dell'applicazione, con net/url, net/http, time e github.com/gorilla/websocket disponibili. Gestisci err e qualsiasi risposta di handshake fallita, poi gestisci conn tramite il normale ciclo di vita di messaggi e chiusura. Per un endpoint WSS pubblico consentito, la lista di proxy HTTP fornisce candidati per proxyURL.
Il dialer del proxy HTTP apre la connessione intermedia e invia CONNECT per la destinazione. Per wss, il TLS di destinazione passa attraverso il tunnel stabilito prima dell'handshake WebSocket.
NetDialContext personalizza la connessione TCP di livello inferiore. Indirizzarlo solo a una porta proxy non implementa CONNECT. Quando è impostato anche Proxy, il callback di rete personalizzato contatta l'intermediario, mentre il livello proxy gestisce la negoziazione.
Mantieni il nome host di destinazione nell'URL wss così che il normale controllo dell'identità TLS si applichi al server previsto.