הגדירו את האפשרויות של ClientWebSocket לפני קריאה ל-ConnectAsync. התחלת החיבור קודם והקצאת ה-proxy אחר כך מאוחרת מדי עבור לחיצת היד הזו.

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. השתמשו בסוג פרטי ההזדהות ובמנגנון האימות הנתמכים על ידי סביבת הריצה, הפלטפורמה ושירות ה-proxy בפריסה שלכם.

פרטי ההזדהות של WebProxy שייכים ל-proxy. ל-ClientWebSocketOptions יש גם מאפיין Credentials נפרד לאימות שרת ה-WebSocket. הקצאת האחד אינה מספקת אוטומטית את הצד השני.

בחיבור WebSocket מאובטח, מנהרת proxy שנדחתה עלולה למנוע את תחילתה של לחיצת היד של WebSocket אל היעד. הפרידו בין ראיות חיבור ואימות של ה-proxy לבין תגובת ה-HTTP upgrade של היעד ותעבורת ה-WebSocket המאוחרת.

חיבור מוצלח הוא רק תחילתה של הסשן. שמרו על ביטול קבלה/שליחה ועל ניקוי משאבים מפורשים לאורך כל חיי האפליקציה; מועד ההגדרה בטיוטה זו אינו מדיניות מלאה לכל הודעה עוקבת.

מאמרים קשורים