Gorilla WebSocket: stilltu Dialer.Proxy fyrir HTTP CONNECT
Stilltu Dialer.Proxy fyrir HTTP-framsendingarproxy í stað þess að meðhöndla varaleita TCP-tölu sem fullkláraða proxyrás.
Fyrir HTTP-framsendingarproxy skaltu stilla Dialer.Proxy hjá Gorilla. WebSocket-slóðin er áfram áfangastaðurinn:
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)
Þessi bútur tilheyrir tengifalli forritsins, með net/url, net/http, time og github.com/gorilla/websocket tiltæk. Meðhöndlaðu err og hvert misheppnað handshake-svar, stýrðu síðan conn í gegnum venjulegan lífsferil skilaboða og lokunar. Fyrir leyfðan opinberan WSS-endapunkt veitir HTTP-proxylistinn frambjóðendur fyrir proxyURL.
HTTP-proxýdíalinn opnar milliliðatenginguna og sendir CONNECT fyrir áfangastaðinn. Fyrir wss fer TLS áfangastaðarins í gegnum rásina sem var komin á áður en WebSocket-handshake hefst.
NetDialContext sérsníður undirliggjandi TCP-tengingu. Að beina henni eingöngu að proxyporti útfærir ekki CONNECT. Þegar Proxy er einnig sett kallar sérsniðið netkall á milliliðinn, en proxy laginu annast samningaviðræðurnar.
Haltu vélarnafni áfangastaðarins í wss-slóðinni svo venjuleg TLS-auðkennisprófun eigi við um fyrirhugaðan netþjón.