I-Gorilla WebSocket: hlela i-Dialer.Proxy ye-HTTP CONNECT
Hlela i-Dialer.Proxy ye-HTTP forward proxy esikhundleni sokuthatha ikheli le-TCP elihlukile njengomhubhe we-proxy osuphelile.
Nge-HTTP forward proxy, hlela i-Dialer.Proxy ye-Gorilla. I-URL ye-WebSocket ihlala iyindawo oya kuyo:
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)
Le ngxenye isekhonweni lokuxhumana lohlelo, ne-net/url, net/http, time kanye ne-github.com/gorilla/websocket. Phatha i-err kanye nempendulo ye-handshake ehlulekile, bese ulawula i-conn ngomjikelezo wempilo ojwayelekile womlayezo nokuvala. Nge-endpoint ye-WSS yomphakathi evunyelwe, uhlu lwama-proxy e-HTTP lunikeza abangeneleli be-proxyURL.
I-dialer ye-proxy ye-HTTP ivula ukuxhumana okuphakathi futhi ithumele i-CONNECT endaweni oya kuyo. Nge-wss, i-TLS yendawo oya kuyo idlula emhubheni owenziwe ngaphambi kwe-handshake ye-WebSocket.
I-NetDialContext yenza ngokwezifiso ukuxhumana kwe-TCP okuphansi. Ukukhomba kuphela embobeni ye-proxy akukusebenzisi i-CONNECT. Uma i-Proxy nayo isethiwe, i-callback yenethiwekhi yangokwezifiso ixhumana nomlamuli, kanti ungqimba lwe-proxy luphethe izingxoxo.
Gcina igama lomsingathi wendawo oya kuyo ku-URL ye-wss ukuze ukuhlolwa kobuwena kwe-TLS okujwayelekile kusebenze kuseva ehlosiwe.