گزینه‌های ClientWebSocket را پیش از فراخوانی ConnectAsync پیکربندی کنید. ابتدا اتصال را شروع کردن و سپس پروکسی را اختصاص دادن برای آن دست‌دهی بسیار دیر است.

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);

نشانی‌ها و متغیرهای حساب نمونه‌اند. فضاهای نام لازم شامل System.Net، System.Net.WebSockets و System.Threading است. از نوع اعتبارنامه و سازوکار احراز هویتی استفاده کنید که زمان اجرا، سکو و سرویس پروکسی در استقرار شما پشتیبانی می‌کنند.

اعتبارنامه‌های WebProxy به پروکسی تعلق دارند. ClientWebSocketOptions ویژگی Credentials جداگانه‌ای نیز برای احراز هویت سرور WebSocket دارد. اختصاص یکی به‌طور خودکار طرف دیگر را برآورده نمی‌کند.

در اتصال امن WebSocket، تونل پروکسی ردشده می‌تواند از آغاز دست‌دهی WebSocket مقصد حتی جلوگیری کند. شواهد اتصال و احراز هویت پروکسی را از پاسخ ارتقای HTTP مقصد و ترافیک بعدی WebSocket جدا کنید.

اتصال موفق فقط آغاز نشست است. لغو دریافت/ارسال و پاک‌سازی منابع را برای تمام عمر برنامه صریح نگه دارید؛ مهلت راه‌اندازی در این طرح، سیاست کامل برای هر پیام بعدی نیست.

مقالات مرتبط