Gorilla WebSocket: sanidi Dialer.Proxy kwa HTTP CONNECT
Sanidi Dialer.Proxy kwa proksi ya HTTP ya mbele badala ya kuchukua anwani mbadala ya TCP kama handaki la proksi lililokamilika.
Kwa proksi ya HTTP ya mbele, sanidi Dialer.Proxy ya Gorilla. URL ya WebSocket inabaki kuwa lengo:
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)
Kipande hiki ni cha kitendakazi cha muunganisho wa programu, huku net/url, net/http, time na github.com/gorilla/websocket zikipatikana. Shughulikia err na jibu lolote la handshake lililoshindwa, kisha dhibiti conn kupitia mzunguko wa kawaida wa ujumbe na kufunga. Kwa kiungo cha WSS cha umma kinachoruhusiwa, orodha ya proksi za HTTP hutoa wagombea wa proxyURL.
Dialer ya proksi ya HTTP hufungua muunganisho wa kati na kutuma CONNECT kwa lengo. Kwa wss, TLS ya lengo hupitia handaki lililoanzishwa kabla ya handshake ya WebSocket.
NetDialContext hubinafsisha muunganisho wa TCP wa ngazi ya chini. Kuielekeza kwenye bandari ya proksi pekee hakutekelezi CONNECT. Wakati Proxy pia imewekwa, callback maalum ya mtandao huunganisha na mpatanishi, huku tabaka la proksi likishughulikia majadiliano.
Weka jina la mwenyeji wa lengo katika URL ya wss ili ukaguzi wa kawaida wa utambulisho wa TLS utumike kwa seva inayokusudiwa.