我正在编写一个连接到 WebSocket 服务器的 C# 应用程序,接收一个未知大小的 JSON 响应。为了达到这个目的,我使用了 ClientWebSocket
类。
从客户端接收数据的唯一方法似乎是使用 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字节?),那么我将使用比所需更多的内存。
如何在不知道响应大小的情况下选择缓冲区大小?