Как я могу передавать данные на диск из клиента C # websocket? - PullRequest
0 голосов
/ 18 сентября 2018

Мы используем веб-сокеты для подключения к устройствам. Я пишу клиент websocket на C # и подключаюсь к большому количеству устройств (более 100) через медленные сети. Устройства реализуют сервер веб-сокетов. Моя клиентская программа подключится к устройству, авторизуется и затем запросит некоторые данные с устройства - ответ может быть несколько сотен мегабайт. А поскольку устройства находятся в медленных сетях, это может занять несколько минут. Ответ должен быть сохранен на диск для последующей обработки. И мне нужно передать это, чтобы у меня не хватило памяти, так как Скорее всего, загрузка выполняется с нескольких устройств одновременно.

Проблема в том, что все найденные мною клиентские библиотеки websocket перезванивают вам только после получения всего сообщения. Например, в websocket-sharp вы пишете

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

Другие клиентские библиотеки выглядят одинаково.

Но в моем случае e.RawData будет стоить более 100 Мб. И, возможно, я получаю 10 из них одновременно, поэтому я должен записать данные на диск по мере их поступления, не ожидая полного сообщения.

Должен ли я написать собственную реализацию клиента websocket или есть другие варианты? Изменение протокола для отправки данных несколькими небольшими порциями не вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...