Don proxy na gaba na HTTP, saita Dialer.Proxy na Gorilla. URL ɗin WebSocket ya kasance makasudin:

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)

Wannan ɓangaren yana cikin aikin haɗin aikace-aikacen, tare da net/url, net/http, time da github.com/gorilla/websocket samuwa. Sarrafa err da duk wani martanin handshake da ya kasa, sannan sarrafa conn ta hanyar rayuwar saƙo da rufewa ta al'ada. Don ƙarshen WSS na jama'a da aka yarda, jerin proxy na HTTP yana ba da 'yan takara don proxyURL.

Mai buga proxy na HTTP yana buɗe haɗin tsaka-tsaki kuma yana aika CONNECT don makasudin. Don wss, TLS na makasudin yana bi ta hanyar da aka kafa kafin handshake na WebSocket.

NetDialContext yana gyaran haɗin TCP na ƙasa. Nuna shi zuwa tashar proxy kawai ba ya aiwatar da CONNECT. Lokacin da aka saita Proxy kuma, callback ɗin cibiyar sadarwa na musamman yana kira ga tsaka-tsaki, yayin da Layer ɗin proxy ke kula da tattaunawar.

Ka riƙe sunan masaukin makasudin a cikin URL ɗin wss domin binciken ainihi na TLS na yau da kullun ya shafi sabar da ake nufi.

Labarai masu alaƙa