Gorilla WebSocket: Dialer.Proxy für HTTP CONNECT konfigurieren
Konfigurieren Sie Dialer.Proxy für einen HTTP-Forward-Proxy, statt eine alternative TCP-Adresse als vollständigen Proxy-Tunnel zu behandeln.
Für einen HTTP-Forward-Proxy konfigurieren Sie Gorillas Dialer.Proxy. Die WebSocket-URL bleibt das Ziel:
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)
Dieses Fragment gehört in die Verbindungsfunktion der Anwendung, wobei net/url, net/http, time und github.com/gorilla/websocket verfügbar sind. Behandeln Sie err und jede fehlgeschlagene Handshake-Antwort, und verwalten Sie conn anschließend über den normalen Lebenszyklus für Nachrichten und Schließen. Für einen zulässigen öffentlichen WSS-Endpunkt liefert die HTTP-Proxy-Liste Kandidaten für proxyURL.
Der HTTP-Proxy-Dialer öffnet die Zwischenverbindung und sendet CONNECT für das Ziel. Bei wss folgt das TLS des Ziels durch den aufgebauten Tunnel vor dem WebSocket-Handshake.
NetDialContext passt die zugrunde liegende TCP-Verbindung an. Allein das Richten auf einen Proxy-Port implementiert kein CONNECT. Ist auch Proxy gesetzt, wählt der benutzerdefinierte Netzwerk-Callback den Vermittler, während die Proxy-Schicht die Aushandlung übernimmt.
Behalten Sie den Ziel-Hostnamen in der wss-URL, damit die normale TLS-Identitätsprüfung für den beabsichtigten Server gilt.