Por HTTP-forwarda prokuro, agordu la Dialer.Proxy de Gorilla. La WebSocket-URL restas la celo:

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)

Ĉi tiu fragmento apartenas al la konekta funkcio de la aplikaĵo, kun net/url, net/http, time kaj github.com/gorilla/websocket disponeblaj. Traktu err kaj ajnan malsukcesan handshake-respondon, poste administru conn per la normala mesaĝa kaj ferma vivociklo. Por permesata publika WSS-finpunkto, la listo de HTTP-prokuroj provizas kandidatojn por proxyURL.

La HTTP-prokura dialilo malfermas la peran konekton kaj sendas CONNECT por la celo. Por wss, la celloka TLS sekvas tra la starigita tunelo antaŭ la WebSocket-handshake.

NetDialContext agordas la pli malaltan TCP-konekton. Direkti ĝin nur al prokura pordo ne realigas CONNECT. Kiam ankaŭ Proxy estas agordita, la propra reta callback alvokas la peranton, dum la prokura tavolo traktas la intertraktadon.

Konservu la celan gastigantan nomon en la wss-URL, por ke la normala TLS-identec-kontrolo aplikiĝu al la celata servilo.

Rilataj artikoloj