Configurați opțiunile ClientWebSocket înainte de a apela ConnectAsync. Începerea mai întâi a conexiunii și atribuirea proxy-ului după aceea este prea târziu pentru acel handshake.

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

Adresele și variabilele de cont sunt ilustrative. Spațiile de nume necesare includ System.Net, System.Net.WebSockets și System.Threading. Utilizați tipul de acreditări și mecanismul de autentificare acceptate de runtime, platformă și serviciul de proxy din implementarea dumneavoastră.

Acreditările WebProxy aparțin proxy-ului. ClientWebSocketOptions are și o proprietate Credentials separată pentru autentificarea serverului WebSocket. Atribuirea uneia nu o satisface automat pe cealaltă parte.

Pentru o conexiune WebSocket securizată, un tunel proxy respins poate împiedica pornirea deloc a handshake-ului WebSocket al destinației. Separați dovezile conexiunii și autentificării proxy de răspunsul HTTP upgrade al destinației și de traficul WebSocket ulterior.

O conexiune reușită este doar începutul sesiunii. Păstrați explicite anularea recepției/trimitării și curățarea resurselor pe toată durata de viață a aplicației; termenul de configurare din această schiță nu este o politică completă pentru fiecare mesaj ulterior.

Articole similare