HTTP forward proxyhoz állítsa be a Gorilla Dialer.Proxy-ját. A WebSocket URL marad a cél:

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)

Ez a részlet az alkalmazás kapcsolódási függvényébe tartozik, ahol a net/url, net/http, time és github.com/gorilla/websocket elérhető. Kezelje az err-t és minden sikertelen handshake-választ, majd a szokásos üzenet- és lezárási életcikluson keresztül kezelje a conn-t. Egy engedélyezett nyilvános WSS-végpont esetén a HTTP proxy lista jelölteket kínál a proxyURL-hez.

A HTTP proxy dialer megnyitja a közvetítő kapcsolatot, és CONNECT-et küld a cél felé. WSS esetén a cél TLS-e a létrehozott alagúton halad át a WebSocket handshake előtt.

A NetDialContext testre szabja az alsóbb szintű TCP-kapcsolatot. Ha csak egy proxyportra irányítja, az nem valósítja meg a CONNECT-et. Ha a Proxy is be van állítva, az egyéni hálózati callback a közvetítőhöz kapcsolódik, míg a proxy réteg kezeli az egyeztetést.

Tartsa meg a cél hosztnevét a wss URL-ben, hogy a szokásos TLS-identitásellenőrzés a szándékolt kiszolgálóra vonatkozzon.

Kapcsolódó cikkek