Gorilla WebSocket: konfigurera Dialer.Proxy för HTTP CONNECT
Konfigurera Dialer.Proxy för en HTTP-forwardproxy i stället för att behandla en alternativ TCP-adress som en färdig proxytunnel.
För en HTTP-forwardproxy konfigurerar du Gorillas Dialer.Proxy. WebSocket-URL:en förblir destinationen:
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)
Det här fragmentet hör till programmets anslutningsfunktion, med net/url, net/http, time och github.com/gorilla/websocket tillgängliga. Hantera err och alla misslyckade handshake-svar och hantera sedan conn via den vanliga livscykeln för meddelanden och stängning. För en tillåten offentlig WSS-slutpunkt tillhandahåller HTTP-proxylistan kandidater för proxyURL.
HTTP-proxydialern öppnar mellananslutningen och skickar CONNECT för destinationen. För wss följer destinationens TLS genom den etablerade tunneln före WebSocket-handskakningen.
NetDialContext anpassar den underliggande TCP-anslutningen. Att bara peka den mot en proxyport implementerar inte CONNECT. När Proxy också är inställt ringer den anpassade nätverkscallbacken mellanledet, medan proxylagret hanterar förhandlingen.
Behåll destinationens värdnamn i wss-URL:en så att den vanliga TLS-identitetskontrollen gäller för den avsedda servern.