Gorilla WebSocket: configurați Dialer.Proxy pentru HTTP CONNECT
Configurați Dialer.Proxy pentru un proxy HTTP de redirecționare în loc să tratați o adresă TCP alternativă ca un tunel proxy finalizat.
Pentru un proxy HTTP de redirecționare, configurați Dialer.Proxy din Gorilla. URL-ul WebSocket rămâne destinația:
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)
Acest fragment aparține funcției de conectare a aplicației, cu net/url, net/http, time și github.com/gorilla/websocket disponibile. Gestionați err și orice răspuns handshake eșuat, apoi gestionați conn prin ciclul de viață normal al mesajelor și închiderii. Pentru un endpoint WSS public permis, lista de proxy-uri HTTP oferă candidați pentru proxyURL.
Dialerul proxy HTTP deschide conexiunea intermediară și trimite CONNECT pentru destinație. Pentru wss, TLS-ul destinației trece prin tunelul stabilit înainte de handshake-ul WebSocket.
NetDialContext personalizează conexiunea TCP de nivel inferior. Direcționarea doar către un port de proxy nu implementează CONNECT. Când este setat și Proxy, callback-ul de rețea personalizat contactează intermediarul, în timp ce stratul proxy gestionează negocierea.
Păstrați numele de gazdă al destinației în URL-ul wss, astfel încât verificarea normală a identității TLS să se aplice serverului dorit.