Dla proxy HTTP przekazującego dalej skonfiguruj Dialer.Proxy w Gorilli. URL WebSocket pozostaje celem:

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)

Ten fragment należy do funkcji połączenia aplikacji, przy dostępnych net/url, net/http, time i github.com/gorilla/websocket. Obsłuż err i każdą nieudaną odpowiedź handshake, a następnie zarządzaj conn w normalnym cyklu życia wiadomości i zamknięcia. Dla dozwolonego publicznego punktu końcowego WSS lista proxy HTTP dostarcza kandydatów do proxyURL.

Dialer proxy HTTP otwiera połączenie pośredniczące i wysyła CONNECT dla celu. W przypadku wss TLS celu przechodzi przez ustanowiony tunel przed handshake WebSocket.

NetDialContext dostosowuje połączenie TCP niższego poziomu. Wskazanie wyłącznie portu proxy nie implementuje CONNECT. Gdy ustawiono także Proxy, niestandardowe wywołanie zwrotne sieci łączy się z pośrednikiem, a warstwa proxy prowadzi negocjacje.

Zachowaj nazwę hosta celu w URL wss, aby standardowa weryfikacja tożsamości TLS dotyczyła zamierzonego serwera.

Powiązane artykuły