我们正在使用websocket连接到设备。我正在用C#编写一个websocket客户端,并通过慢速网络连接到大量设备(超过100个)。这些设备实现了一个websocket服务器。 我的客户端程序将连接到设备,进行授权,然后从该设备请求一些数据-答案可能是几百兆字节。由于设备处于慢速网络中,因此可能需要几分钟的时间。 应将响应保存到磁盘以供以后处理。而且我需要流式传输,这样我就不会耗尽内存,因为 我可能会同时从多台设备下载。
问题在于,我发现的所有websocket客户端库仅在收到整条消息时才回叫您。例如,在websocket-sharp中,您编写
ws.OnMessage += (sender, e) => {
... do something with e.RawData
};
其他客户端库似乎相同。
但是在我的情况下,e.RawData将为100+ Mb。而且我可能会同时收到其中的10个,因此我必须在数据到达磁盘时将其刷新到磁盘,而不要等待完整的消息。
我必须编写自己的websocket客户端实现,还是有其他选择?不能更改协议以将数据分成几个较小的块发送。