HTTP-edelleenvälityspalvelimelle määritä Gorillan Dialer.Proxy. WebSocket-URL pysyy kohteena:

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)

Tämä katkelma kuuluu sovelluksen yhteysfunktioon, kun net/url, net/http, time ja github.com/gorilla/websocket ovat käytettävissä. Käsittele err ja mahdollinen epäonnistunut handshake-vastaus ja hallinnoi sen jälkeen connia tavallisella viestien ja sulkemisen elinkaarella. Sallitulle julkiselle WSS-päätepisteelle HTTP-välityspalvelinlista tarjoaa ehdokkaita proxyURL:lle.

HTTP-välityspalvelimen dialer avaa välittävän yhteyden ja lähettää CONNECTin kohteelle. Wss:n tapauksessa kohteen TLS kulkee muodostetun tunnelin läpi ennen WebSocket-kättelyä.

NetDialContext mukauttaa alemman tason TCP-yhteyden. Sen osoittaminen pelkästään välityspalvelimen porttiin ei toteuta CONNECTia. Kun myös Proxy on asetettu, mukautettu verkko-callback ottaa yhteyden välittäjään, kun taas välityspalvelinkerros hoitaa neuvottelun.

Pidä kohteen isäntänimi wss-URL:ssa, jotta tavallinen TLS-identiteettitarkistus kohdistuu aiottuun palvelimeen.

Aiheeseen liittyvät artikkelit