Til en HTTP-forwardproxy skal du konfigurere Gorillas Dialer.Proxy. WebSocket-URL'en forbliver 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)

Dette uddrag hører til applikationens forbindelsesfunktion med net/url, net/http, time og github.com/gorilla/websocket tilgængelige. Håndtér err og ethvert mislykket handshake-svar, og styr derefter conn gennem den normale livscyklus for beskeder og lukning. For et tilladt offentligt WSS-endepunkt leverer HTTP-proxylisten kandidater til proxyURL.

HTTP-proxydialeren åbner mellemforbindelsen og sender CONNECT for destinationen. Ved wss følger destinationens TLS gennem den etablerede tunnel før WebSocket-handshaket.

NetDialContext tilpasser den underliggende TCP-forbindelse. At pege den på en proxyport alene implementerer ikke CONNECT. Når Proxy også er sat, ringer den tilpassede netværkscallback til mellemleddet, mens proxylaget håndterer forhandlingen.

Behold destinationsværtsnavnet i wss-URL'en, så den normale TLS-identitetskontrol gælder for den tilsigtede server.

Relaterede artikler