Gorilla WebSocket: Konfigurasikan Dialer.Proxy untuk HTTP CONNECT
Konfigurasikan Dialer.Proxy untuk forward proxy HTTP alih-alih memperlakukan alamat TCP alternatif sebagai tunnel proxy yang selesai.
Untuk forward proxy HTTP, konfigurasikan Dialer.Proxy milik Gorilla. URL WebSocket tetap menjadi tujuan:
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)
Fragmen ini berada di fungsi koneksi aplikasi, dengan net/url, net/http, time, dan github.com/gorilla/websocket tersedia. Tangani err dan setiap respons handshake yang gagal, lalu kelola conn melalui siklus hidup pesan dan penutupan yang normal. Untuk endpoint WSS publik yang diizinkan, daftar proxy HTTP menyediakan kandidat untuk proxyURL.
Dialer proxy HTTP membuka koneksi perantara dan mengirim CONNECT untuk tujuan. Untuk wss, TLS tujuan mengalir melalui tunnel yang terbentuk sebelum handshake WebSocket.
NetDialContext menyesuaikan koneksi TCP tingkat bawah. Mengarahkannya hanya ke port proxy tidak menerapkan CONNECT. Jika Proxy juga diatur, callback jaringan khusus menghubungi perantara, sementara lapisan proxy menangani negosiasi.
Pertahankan nama host tujuan di URL wss agar pemeriksaan identitas TLS normal berlaku pada server yang dimaksud.