Defina el proxy de ClientWebSocket antes de conectar
Configure un proxy .NET WebSocket y sus credenciales antes de establecer la conexión, manteniéndolas separadas de las credenciales del destino.
Configure las opciones de ClientWebSocket antes de llamar a ConnectAsync. Iniciar primero la conexión y asignar el proxy después llega 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);
Las direcciones y las variables de cuenta son ilustrativas. Los espacios de nombres necesarios incluyen System.Net, System.Net.WebSockets y System.Threading. Use el tipo de credencial y el mecanismo de autenticación que admitan el runtime, la plataforma y el servicio de proxy en su despliegue.
Las credenciales de WebProxy pertenecen al proxy. ClientWebSocketOptions también tiene una propiedad Credentials independiente para la autenticación del servidor WebSocket. Asignar una no satisface automáticamente a la otra parte.
En una conexión WebSocket segura, un túnel de proxy rechazado puede impedir que el handshake WebSocket del destino empiece siquiera. Separe las pruebas de conexión y autenticación del proxy de la respuesta HTTP upgrade del destino y del tráfico WebSocket posterior.
Una conexión correcta es solo el comienzo de la sesión. Mantenga explícitos la cancelación de recepción/envío y la limpieza de recursos durante toda la vida de la aplicación; el plazo de configuración de este esbozo no es una política completa para cada mensaje posterior.