Я пишу приложение C#, которое подключается к серверу websocket, и получает ответ JSON неизвестного размера. Для этой цели я использую класс ClientWebSocket
.Выбор размера буфера для ответа WebSocket
Единственный способ получить данные от клиента, кажется, с ReceiveAsync
методом, который принимает ArraySegment<byte>
в качестве аргумента:
var client = new ClientWebSocket();
client.ConnectAsync(new Uri($"ws://localhost:{port}"), token).Wait();
var result = new ArraySegment<byte>(new byte[1000]);
client.ReceiveAsync(result, token).Wait();
Проблема в том, так как я не знаю, как большой формат JSON ответ будет, я не знаю, как большой сделать буфер, поддерживающий этот массив ArraySegment. В этом случае я указал 1000 байтов, что слишком мало, и ответ усечен. Однако я беспокоюсь, что если я задаю размер буфера как произвольно большой (1,000,000 байт?), Я буду использовать больше памяти, чем мне нужно.
Как выбрать размер буфера, не зная размер ответа?