Fir en HTTP-Forward-Proxy konfiguréiert dem Gorilla säin Dialer.Proxy. D'WebSocket-URL bleift d'Zil:

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)

Dëse Fragment gehéiert an d'Verbindungsfunktioun vun der Applikatioun, mat net/url, net/http, time an github.com/gorilla/websocket verfügbar. Behandelt err an all feelgeschloen Handshake-Antwert, a verwalt duerno conn iwwer den normale Message- a Schlussliewenszyklus. Fir en erlaabten ëffentlechen WSS-Endpunkt liwwert d'HTTP-Proxy-Lëscht Kandidaten fir proxyURL.

Den HTTP-Proxy-Dialer mécht d'Zwëschenverbindung op a schéckt CONNECT fir d'Zil. Bei wss geet den TLS vum Zil duerch den etabléierten Tunnel virum WebSocket-Handshake.

NetDialContext passt d'ënnescht TCP-Verbindung un. Et just op en Proxy-Port ze riichten implementéiert keen CONNECT. Wann Proxy och gesat ass, rifft dee personaliséierte Netzwierk-Callback den Zwëschenhändler un, während d'Proxy-Schicht d'Verhandlung iwwerhëlt.

Behält den Hostnumm vum Zil an der wss-URL, sou datt déi normal TLS-Identitéitspréifung fir de gewënschte Server gëllt.

Ähnlech Artikelen