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

JSON в WebSocket в C#

Текстовый кадр WebSocket часто несёт JSON: после ReceiveAsync байты переводят в строку UTF-8 и передают в JsonDocument.Parse. Бинарные кадры для JSON не используют.

Локально можно проверить разбор без сети - из строки "{"event":"ready"}" поле event даст "ready":

using System.Text.Json; string frame = "{\"event\":\"ready\"}"; using JsonDocument doc = JsonDocument.Parse(frame); Console.WriteLine(doc.RootElement.GetProperty("event").GetString());

Неверный JSON в кадре вызывает JsonException на этапе Parse. На echo-сервисе верный JSON отправляют как текст, получают тот же кадр и читают поле kind:

using System.Net.WebSockets; using System.Text; using System.Text.Json; using ClientWebSocket client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(8)); await client.ConnectAsync(new Uri("wss://echo.websocket.events"), cts.Token); string json = "{\"kind\":\"ping\"}"; await client.SendAsync(Encoding.UTF8.GetBytes(json), WebSocketMessageType.Text, true, CancellationToken.None); byte[] buf = new byte[256]; WebSocketReceiveResult part = await client.ReceiveAsync(buf, CancellationToken.None); string back = Encoding.UTF8.GetString(buf, 0, part.Count); using JsonDocument doc = JsonDocument.Parse(back); Console.WriteLine(doc.RootElement.GetProperty("kind").GetString());

Отправьте на echo-сервис JSON с полем "code" и числом 7, примите ответ и выведите это число после разбора.

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