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

时间:2018-09-18 07:59:08

标签: c# websocket

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

问题在于,我发现的所有websocket客户端库仅在收到整条消息时才回叫您。例如,在websocket-sharp中,您编写

ws.OnMessage += (sender, e) => {
    ... do something with e.RawData 
  };

其他客户端库似乎相同。

但是在我的情况下,e.RawData将为100+ Mb。而且我可能会同时收到其中的10个,因此我必须在数据到达磁盘时将其刷新到磁盘,而不要等待完整的消息。

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

0 个答案:

没有答案