Pre HTTP forward proxy nakonfigurujte Dialer.Proxy z Gorilly. WebSocket URL zostáva cieľom:

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)

Tento fragment patrí do pripájacej funkcie aplikácie, kde sú dostupné net/url, net/http, time a github.com/gorilla/websocket. Ošetrite err a akúkoľvek neúspešnú odpoveď handshake, potom spravujte conn bežným životným cyklom správ a zatvárania. Pre povolený verejný koncový bod WSS zoznam HTTP proxy dodáva kandidátov pre proxyURL.

HTTP proxy dialer otvorí sprostredkujúce pripojenie a odošle CONNECT pre cieľ. Pri wss prechádza TLS cieľa cez zavedený tunel pred handshake WebSocket.

NetDialContext upravuje nižšie TCP pripojenie. Nasmerovanie iba na port proxy neimplementuje CONNECT. Ak je nastavený aj Proxy, vlastný sieťový callback nadviaže spojenie s prostredníkom, zatiaľ čo proxy vrstva vedie rokovania.

Ponechajte názov hostiteľa cieľa v URL wss, aby sa bežná kontrola identity TLS vzťahovala na zamýšľaný server.

Súvisiace články