Обработка веб-сокета aiohttp EOfStream

Я подключаюсь к конечной точке веб-сокета, используя http://aiohttp.readthedocs.io/en/stable/ WebsocketProtocol по умолчанию и ни с того ни с сего (после некоторое время и несколько итераций бесконечного цикла) я всегда получаю WSMsgType.ERROR с EofStream в качестве данных. В моем понимании, такого быть не должно. Я пытался исследовать, как с этим бороться, но безуспешно. Должен ли я просто закрыть и снова подключиться к конечной точке? Есть ли способ гарантировать, что этого не произойдет? Должен ли я реализовать определенный алгоритм обработки?


person Exa    schedule 01.11.2017    source источник


Ответы (1)


Это означает, что соединение закрыто узлом. Интернет — нестабильный транспорт, всегда нужно быть готовым к таким ситуациям. Обычно в таких случаях помогает переподключение.

person Andrew Svetlov    schedule 01.11.2017
comment
Разве я не должен сначала получить сообщение CLOSE WSMsgType? - person Exa; 02.11.2017
comment
Это зависит. Закрытие отправляется стандартным отключением, инициированным узлом. Проблемы с сетью могут не сигнализироваться CLOSE. Вот как работает протокол TCP, проблема не только в веб-сокетах. - person Andrew Svetlov; 02.11.2017