Gorilla WebSocket: configureer Dialer.Proxy voor HTTP CONNECT
Configureer Dialer.Proxy voor een HTTP-forwardproxy in plaats van een alternatief TCP-adres als een voltooide proxytunnel te behandelen.
Voor een HTTP-forwardproxy configureert u de Dialer.Proxy van Gorilla. De WebSocket-URL blijft de bestemming:
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)
Dit fragment hoort bij de verbindingsfunctie van de applicatie, met net/url, net/http, time en github.com/gorilla/websocket beschikbaar. Behandel err en elke mislukte handshake-reactie en beheer daarna conn via de normale levenscyclus voor berichten en sluiten. Voor een toegestaan openbaar WSS-eindpunt levert de HTTP-proxylijst kandidaten voor proxyURL.
De HTTP-proxydialer opent de tussenverbinding en stuurt CONNECT voor de bestemming. Bij wss gaat de TLS van de bestemming door de opgezette tunnel vóór de WebSocket-handshake.
NetDialContext past de onderliggende TCP-verbinding aan. Alleen naar een proxy-poort wijzen implementeert geen CONNECT. Als Proxy ook is ingesteld, kiest de aangepaste netwerk-callback de tussenpersoon, terwijl de proxylaag de onderhandeling afhandelt.
Houd de hostnaam van de bestemming in de wss-URL, zodat de normale TLS-identiteitscontrole op de bedoelde server van toepassing is.