Para un proxy HTTP de reenvío, configura Dialer.Proxy de Gorilla. O URL de WebSocket segue a ser o 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 pertence á función de conexión da aplicación, con net/url, net/http, time e github.com/gorilla/websocket dispoñibles. Xestiona err e calquera resposta de handshake fallida, e despois xestiona conn mediante o ciclo de vida normal de mensaxes e peche. Para un punto final WSS público permitido, a lista de proxies HTTP fornece candidatos para proxyURL.

O dialer do proxy HTTP abre a conexión intermedia e envía CONNECT para o destino. Para wss, o TLS do destino avanza polo túnel establecido antes do handshake de WebSocket.

NetDialContext personaliza a conexión TCP de nivel inferior. Apuntalo só a un porto de proxy non implementa CONNECT. Cando tamén se define Proxy, a devolución de chamada de rede personalizada marca o intermediario, mentres que a capa de proxy xestiona a negociación.

Mantén o nome de host do destino no URL wss para que a comprobación normal de identidade TLS se aplique ao servidor previsto.

Artigos relacionados