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.

Relaterade artiklar