Отправка текста WebSocket в C#
Текстовый кадр отправляют через SendAsync
с типом WebSocketMessageType.Text.
Параметр endOfMessage равен true,
если весь текст помещается в один кадр.
Пример может обращаться к стороннему echo-хосту в
интернете; он не обязан быть доступен. На echo-сервисе
после подключения отправим слово
"ping" и проверим, что соединение остаётся
Open - отправка не закрывает канал
сама по себе:
using System.Net.WebSockets;
using System.Text;
using ClientWebSocket client = new();
using CancellationTokenSource cts = new(TimeSpan.FromSeconds(8));
await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token);
byte[] frame = Encoding.UTF8.GetBytes("ping");
await client.SendAsync(frame, WebSocketMessageType.Text, true, CancellationToken.None);
Console.WriteLine(client.State);
Байты текста готовят заранее через
Encoding.UTF8.GetBytes. Длина массива
показывает, сколько байт ушло в кадр:
using System.Net.WebSockets;
using System.Text;
using ClientWebSocket client = new();
using CancellationTokenSource cts = new(TimeSpan.FromSeconds(8));
await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token);
byte[] payload = Encoding.UTF8.GetBytes("lab-send");
await client.SendAsync(payload, WebSocketMessageType.Text, true, CancellationToken.None);
Console.WriteLine(payload.Length);
Отправьте на echo-сервис строку "ready"
и выведите длину отправленного текста в байтах.