For en HTTP-forwardproxy konfigurerer du Gorillas Dialer.Proxy. WebSocket-URL-en forblir destinasjonen:

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)

Dette fragmentet hører til applikasjonens tilkoblingsfunksjon, med net/url, net/http, time og github.com/gorilla/websocket tilgjengelig. Håndter err og enhver mislykket handshake-respons, og administrer deretter conn gjennom den vanlige livssyklusen for meldinger og lukking. For et tillatt offentlig WSS-endepunkt leverer HTTP-proxylisten kandidater for proxyURL.

HTTP-proxydialeren åpner mellomforbindelsen og sender CONNECT for destinasjonen. For wss følger destinasjonens TLS gjennom den etablerte tunnelen før WebSocket-handshaken.

NetDialContext tilpasser den underliggende TCP-forbindelsen. Å peke den mot en proxyport alene implementerer ikke CONNECT. Når Proxy også er satt, ringer den tilpassede nettverkscallbacken mellomleddet, mens proxylaget håndterer forhandlingen.

Behold destinasjonens vertsnavn i wss-URL-en slik at den vanlige TLS-identitetskontrollen gjelder for den tiltenkte serveren.

Relaterte artikler