Gorilla WebSocket: konfigurer Dialer.Proxy for HTTP CONNECT
Konfigurer Dialer.Proxy for en HTTP-forwardproxy i stedet for å behandle en alternativ TCP-adresse som en fullført proxytunnel.
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.