Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpWsCon 501 of 509 menu
◀ ▶

Подключение ClientWebSocket в C#

Клиент открывает канал через ClientWebSocket.ConnectAsync. Вызов выполняет HTTP-рукопожатие и переводит соединение в режим WebSocket. Успех виден в свойстве State - значение Open означает, что можно вызывать SendAsync и ReceiveAsync.

В примерах может использоваться сторонний echo-сервис "wss://echo.websocket.events" - локальный сервер не нужен, но нужен интернет, и хост может быть недоступен или нестабилен; успешный запуск не гарантируется. Таймаут задают через CancellationTokenSource, чтобы программа не зависла при сбое сети:

using System.Net.WebSockets; using ClientWebSocket client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(8)); await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token); Console.WriteLine(client.State);

После Open соединение держится открытым, пока его не закроют через CloseAsync или пока сервер не разорвёт канал. Повторный ConnectAsync на том же экземпляре без закрытия приведёт к ошибке - для нового сеанса создают новый ClientWebSocket. Ниже канал проверяют, закрывают и снова выводят состояние:

using System.Net.WebSockets; using ClientWebSocket client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(8)); await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token); Console.WriteLine(client.State == WebSocketState.Open); await client.CloseAsync(WebSocketCloseStatus.NormalClosure, "done", CancellationToken.None); Console.WriteLine(client.State);

Подключитесь к echo-сервису с ожиданием не дольше 3 секунд и выведите в консоль, открыт ли канал.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить