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.

Relaterade artiklar