Configure as opcións de ClientWebSocket antes de chamar a ConnectAsync. Iniciar primeiro a conexión e asignar o proxy despois chega demasiado tarde para ese 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);

Os enderezos e as variables de conta son ilustrativos. Os espazos de nomes necesarios inclúen System.Net, System.Net.WebSockets e System.Threading. Use o tipo de credencial e o mecanismo de autenticación que admitan o runtime, a plataforma e o servizo de proxy no seu despregamento.

As credenciais de WebProxy pertencen ao proxy. ClientWebSocketOptions tamén ten unha propiedade Credentials separada para a autenticación do servidor WebSocket. Asignar unha non satisfai automaticamente a outra parte.

Nunha conexión WebSocket segura, un túnel de proxy rexeitado pode impedir que o handshake WebSocket de destino comece. Separe as probas de conexión e autenticación do proxy da resposta HTTP upgrade de destino e do tráfico WebSocket posterior.

Unha conexión correcta é só o comezo da sesión. Mantéña explícitos a cancelación de recepción/enxío e a limpeza de recursos durante toda a vida da aplicación; o prazo de configuración deste esbozo non é unha política completa para cada mensaxe posterior.

Artigos relacionados