Para um proxy HTTP de encaminhamento, configure o Dialer.Proxy do Gorilla. O URL WebSocket continua 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 à função de conexão da aplicação, com net/url, net/http, time e github.com/gorilla/websocket disponíveis. Trate err e qualquer resposta de handshake falhada e, em seguida, gerencie conn através do ciclo de vida normal de mensagens e fecho. Para um endpoint WSS público permitido, a lista de proxies HTTP fornece candidatos para proxyURL.

O dialer do proxy HTTP abre a conexão intermédia e envia CONNECT para o destino. Para wss, o TLS do destino segue pelo túnel estabelecido antes do handshake WebSocket.

NetDialContext personaliza a conexão TCP de nível inferior. Apontá-lo apenas para uma porta de proxy não implementa CONNECT. Quando Proxy também está definido, a chamada de retorno de rede personalizada contacta o intermediário, enquanto a camada de proxy trata da negociação.

Mantenha o nome do anfitrião de destino no URL wss para que a verificação normal de identidade TLS se aplique ao servidor pretendido.

Artigos relacionados