如何将数据从C#websocket客户端流式传输到磁盘?

如何将数据从C#websocket客户端流式传输到磁盘?,c#,websocket,C#,Websocket,我们正在使用WebSocket连接到设备。我正在用C#编写一个websocket客户端,并通过慢速网络连接到大量设备(100+)。这些设备实现一个websocket服务器。 我的客户端程序将连接到设备,授权,然后从设备请求一些数据-答案可能是几百兆字节。而且由于这些设备的网络速度较慢,可能需要几分钟的时间。 应将响应保存到磁盘以供以后处理。我需要流式传输,这样我就不会耗尽内存,因为 我可能同时从多个设备下载 问题是,我找到的所有websocket客户端库只在接收到整个消息后才给您回电话。例如,在

我们正在使用WebSocket连接到设备。我正在用C#编写一个websocket客户端,并通过慢速网络连接到大量设备(100+)。这些设备实现一个websocket服务器。 我的客户端程序将连接到设备,授权,然后从设备请求一些数据-答案可能是几百兆字节。而且由于这些设备的网络速度较慢,可能需要几分钟的时间。 应将响应保存到磁盘以供以后处理。我需要流式传输,这样我就不会耗尽内存,因为 我可能同时从多个设备下载

问题是,我找到的所有websocket客户端库只在接收到整个消息后才给您回电话。例如,在websocket sharp中,您可以编写

ws.OnMessage += (sender, e) => {
    ... do something with e.RawData 
  };
其他客户机库似乎也一样

但在我的例子中,e.RawData将是100+Mb。我可能会同时收到其中的10个,所以我必须在数据到达时将数据刷新到磁盘,而不是等待完整的消息


我是否必须编写自己的websocket客户端实现,或者是否有其他选项?更改协议以将数据分成几个较小的数据块发送不是一个选项。

您可以控制客户端吗?如果您这样做,您可以将数据分割成块,而我无法控制设备。就websocket而言,我的程序是客户端,设备是服务器。