Закрытие WebSocket в C#
Корректное завершение клиента - кадр закрытия
через CloseAsync с кодом и короткой
причиной на английском.
После отправки одного сообщения можно закрыть соединение и вывести статус:
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("ping"),
WebSocketMessageType.Text,
true,
CancellationToken.None);
await client.CloseAsync(
WebSocketCloseStatus.NormalClosure,
"done",
CancellationToken.None);
Console.WriteLine(client.CloseStatus);
Свойство CloseStatusDescription хранит
текст причины из ответного кадра сервера.
Echo-сервис часто возвращает ту же строку, что
передали в CloseAsync:
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.CloseAsync(
WebSocketCloseStatus.NormalClosure,
"bye",
CancellationToken.None);
Console.WriteLine(client.CloseStatusDescription);
Закройте соединение с echo-сервисом с причиной
"finished" и выведите код закрытия.