Untuk proxy ke hadapan HTTP, konfigurasikan Dialer.Proxy Gorilla. URL WebSocket kekal sebagai destinasi:

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)

Serpihan ini terletak dalam fungsi sambungan aplikasi, dengan net/url, net/http, time dan github.com/gorilla/websocket tersedia. Kendalikan err dan sebarang respons handshake yang gagal, kemudian urus conn melalui kitaran hayat mesej dan penutupan biasa. Untuk titik akhir WSS awam yang dibenarkan, senarai proxy HTTP menyediakan calon untuk proxyURL.

Dialer proxy HTTP membuka sambungan perantara dan menghantar CONNECT untuk destinasi. Untuk wss, TLS destinasi bergerak melalui terowong yang terbentuk sebelum handshake WebSocket.

NetDialContext menyesuaikan sambungan TCP peringkat bawah. Menghalakannya ke port proxy sahaja tidak melaksanakan CONNECT. Apabila Proxy juga ditetapkan, callback rangkaian tersuai menghubungi perantara, manakala lapisan proxy mengendalikan rundingan.

Kekalkan nama hos destinasi dalam URL wss supaya pemeriksaan identiti TLS biasa terpakai kepada pelayan yang dimaksudkan.

Artikel berkaitan