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.

Articole similare