Para un proxy HTTP de reenvío, configura Dialer.Proxy de Gorilla. La URL de WebSocket sigue siendo el destino:

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)

Este fragmento pertenece a la función de conexión de la aplicación, con net/url, net/http, time y github.com/gorilla/websocket disponibles. Maneja err y cualquier respuesta de handshake fallida, y luego gestiona conn mediante el ciclo de vida normal de mensajes y cierre. Para un punto final WSS público permitido, la lista de proxies HTTP proporciona candidatos para proxyURL.

El dialer del proxy HTTP abre la conexión intermediaria y envía CONNECT para el destino. Para wss, el TLS del destino avanza por el túnel establecido antes del handshake de WebSocket.

NetDialContext personaliza la conexión TCP de nivel inferior. Apuntarlo solo a un puerto de proxy no implementa CONNECT. Cuando también se establece Proxy, la devolución de llamada de red personalizada marca al intermediario, mientras que la capa de proxy gestiona la negociación.

Mantén el nombre de host del destino en la URL wss para que la comprobación normal de identidad TLS se aplique al servidor previsto.

Artículos relacionados