Konfigurasikan opsi ClientWebSocket sebelum memanggil ConnectAsync. Memulai koneksi lebih dulu lalu menetapkan proxy setelahnya terlalu terlambat untuk handshake itu.

using var socket = new ClientWebSocket();
socket.Options.Proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential(proxyUser, proxyPassword)
};
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
await socket.ConnectAsync(new Uri("wss://example.com/socket"),
                          deadline.Token);

Alamat dan variabel akun bersifat ilustratif. Namespace yang diperlukan mencakup System.Net, System.Net.WebSockets, dan System.Threading. Gunakan jenis kredensial dan mekanisme autentikasi yang didukung runtime, platform, dan layanan proxy dalam penerapan Anda.

Kredensial WebProxy milik proxy. ClientWebSocketOptions juga memiliki properti Credentials terpisah untuk autentikasi server WebSocket. Menetapkan salah satunya tidak otomatis memenuhi pihak lainnya.

Pada koneksi WebSocket aman, tunnel proxy yang ditolak dapat mencegah handshake WebSocket tujuan dimulai sama sekali. Pisahkan bukti koneksi dan autentikasi proxy dari respons HTTP upgrade tujuan dan lalu lintas WebSocket berikutnya.

Koneksi yang berhasil hanyalah awal sesi. Jaga pembatalan terima/kirim dan pembersihan sumber daya tetap eksplisit sepanjang masa hidup aplikasi; tenggat penyiapan dalam sketsa ini bukan kebijakan lengkap untuk setiap pesan berikutnya.

Artikel terkait