Per a un proxy HTTP d'avançament, configureu el Dialer.Proxy de Gorilla. L'URL de WebSocket continua sent la destinació:

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)

Aquest fragment pertany a la funció de connexió de l'aplicació, amb net/url, net/http, time i github.com/gorilla/websocket disponibles. Gestiona err i qualsevol resposta d'handshake fallida, i després gestiona conn mitjançant el cicle de vida normal de missatges i tancament. Per a un punt final WSS públic permès, la llista de proxys HTTP proporciona candidats per a proxyURL.

El dialer del proxy HTTP obre la connexió intermediària i envia CONNECT per a la destinació. Per a wss, el TLS de destinació segueix pel túnel establert abans de l'handshake de WebSocket.

NetDialContext personalitza la connexió TCP de nivell inferior. Apuntar-lo només a un port de proxy no implementa CONNECT. Quan Proxy també està definit, la devolució de trucada de xarxa personalitzada connecta amb l'intermediari, mentre que la capa de proxy gestiona la negociació.

Mantingueu el nom d'amfitrió de destinació a l'URL wss perquè la comprovació normal d'identitat TLS s'apliqui al servidor previst.

Articles relacionats