Ange ClientWebSockets proxy innan du ansluter
Konfigurera en .NET WebSocket-proxy och dess autentiseringsuppgifter före anslutningsupprättandet och håll dem åtskilda från målets autentiseringsuppgifter.
Konfigurera ClientWebSockets alternativ innan du anropar ConnectAsync. Att starta anslutningen först och tilldela proxyn efteråt är för sent för den handskakningen.
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);
Adresserna och kontovariablerna är illustrativa. De nödvändiga namnrymderna omfattar System.Net, System.Net.WebSockets och System.Threading. Använd den autentiseringsuppgiftstyp och autentiseringsmekanism som stöds av runtime, plattform och proxytjänst i din distribution.
Autentiseringsuppgifterna för WebProxy tillhör proxyn. ClientWebSocketOptions har också en separat Credentials-egenskap för autentisering av WebSocket-servern. Att tilldela den ena uppfyller inte automatiskt den andra parten.
För en säker WebSocket-anslutning kan en avvisad proxytunnel hindra att målets WebSocket-handskakning ens börjar. Separera bevis för proxyanslutning och autentisering från målets HTTP upgrade-svar och senare WebSocket-trafik.
En lyckad anslutning är bara början på sessionen. Håll avbrytande av mottagning/sändning och resursstädning explicit under applikationens livstid; tidsgränsen i den här skissen är inte en fullständig policy för varje efterföljande meddelande.