Gorilla WebSocket: configure Dialer.Proxy para HTTP CONNECT
Configure Dialer.Proxy para um proxy HTTP de encaminhamento em vez de tratar um endereço TCP alternativo como um túnel de proxy concluído.
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.