Skonfiguruj opcje ClientWebSocket przed wywołaniem ConnectAsync. Najpierw rozpoczęcie połączenia, a dopiero potem przypisanie proxy jest zbyt późno na ten uścisk dłoni.

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

Adresy i zmienne konta są ilustracyjne. Wymagane przestrzenie nazw obejmują System.Net, System.Net.WebSockets i System.Threading. Użyj typu poświadczeń i mechanizmu uwierzytelniania obsługiwanych przez środowisko uruchomieniowe, platformę i usługę proxy w Twoim wdrożeniu.

Poświadczenia WebProxy należą do proxy. ClientWebSocketOptions ma również osobną właściwość Credentials do uwierzytelniania serwera WebSocket. Przypisanie jednego nie zaspokaja automatycznie drugiej strony.

W przypadku bezpiecznego połączenia WebSocket odrzucony tunel proxy może uniemożliwić rozpoczęcie uścisku dłoni WebSocket z miejscem docelowym. Oddziel dowody połączenia i uwierzytelnienia proxy od odpowiedzi HTTP upgrade miejsca docelowego i późniejszego ruchu WebSocket.

Udane połączenie to dopiero początek sesji. Utrzymuj jawną anulację odbioru/wysyłania i czyszczenie zasobów przez cały okres działania aplikacji; termin konfiguracji w tym szkicu nie jest pełną polityką dla każdej kolejnej wiadomości.

Powiązane artykuły