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

Несколько WebSocket-сообщений в C#

Пока ClientWebSocket в состоянии Open, можно отправить несколько текстовых кадров подряд.

На echo-сервисе каждый кадр обычно возвращается отдельным ответом. Ниже клиент шлёт два сообщения и проверяет, что соединение остаётся открытым:

using System.Net.WebSockets; using System.Text; using ClientWebSocket client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(5)); await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token); await client.SendAsync( Encoding.UTF8.GetBytes("alpha"), WebSocketMessageType.Text, true, CancellationToken.None); await client.SendAsync( Encoding.UTF8.GetBytes("beta"), WebSocketMessageType.Text, true, CancellationToken.None); Console.WriteLine(client.State);

После серии отправок ответы читают по одному. Echo-сервис присылает отдельный кадр на каждый SendAsync, поэтому первое чтение возвращает первую фразу:

using System.Net.WebSockets; using System.Text; using ClientWebSocket client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(5)); await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token); for (int i = 1; i <= 2; i++) { await client.SendAsync( Encoding.UTF8.GetBytes("msg" + i), WebSocketMessageType.Text, true, CancellationToken.None); } byte[] buf = new byte[256]; WebSocketReceiveResult part = await client.ReceiveAsync(buf, CancellationToken.None); Console.WriteLine(Encoding.UTF8.GetString(buf, 0, part.Count));

Отправьте на echo-сервис три разные короткие фразы на английском и выведите длину первого полученного ответа.

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