Налаштуйте параметри ClientWebSocket до виклику ConnectAsync. Спочатку розпочати з'єднання, а потім призначити проксі — запізно для цього рукостискання.

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

Адреси та змінні облікового запису наведено для прикладу. Потрібні простори імен включають System.Net, System.Net.WebSockets і System.Threading. Використовуйте тип облікових даних і механізм автентифікації, які підтримують середовище виконання, платформа та проксі-служба у вашому розгортанні.

Облікові дані WebProxy належать проксі. ClientWebSocketOptions також має окрему властивість Credentials для автентифікації сервера WebSocket. Призначення одних не задовольняє автоматично іншу сторону.

Для захищеного з'єднання WebSocket відхилений тунель проксі може взагалі не дати початися рукостисканню WebSocket з призначенням. Відокремлюйте свідчення з'єднання та автентифікації проксі від відповіді HTTP upgrade призначення і подальшого трафіку WebSocket.

Успішне з'єднання — лише початок сеансу. Тримайте скасування приймання/надсилання та очищення ресурсів явними протягом усього життя застосунку; термін налаштування в цьому начерку не є повною політикою для кожного наступного повідомлення.

Схожі статті