For ein HTTP-forwardproxy konfigurerer du Dialer.Proxy til Gorilla. WebSocket-URL-en blir verande destinasjonen:

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)

Dette fragmentet høyrer til tilkoplingsfunksjonen i applikasjonen, med net/url, net/http, time og github.com/gorilla/websocket tilgjengelege. Handsame err og eitkvart mislukka handshake-svar, og handsame deretter conn gjennom den vanlege livssyklusen for meldingar og lukking. For eit tillate offentleg WSS-endepunkt leverer HTTP-proxylista kandidatar for proxyURL.

HTTP-proxydialaren opnar mellomkoplinga og sender CONNECT for destinasjonen. For wss går TLS-en til destinasjonen gjennom den etablerte tunnelen før WebSocket-handshaken.

NetDialContext tilpassar den underliggande TCP-tilkoplinga. Å peike henne berre mot ein proxyport implementerer ikkje CONNECT. Når Proxy også er sett, ringjer den tilpassa nettverkscallbacken mellomleddet, medan proxylaget handsame forhandlinga.

Hald vertsnamnet til destinasjonen i wss-URL-en slik at den vanlege TLS-identitetskontrollen gjeld for den tiltenkte tenaren.

Relaterte artiklar