2015-12-07 3 views
3

У меня есть nginx-сервер с часовым тайм-аутом и веб-сервером Tornado.Безмолвно закрывающие websockets в Tornado

Когда nginx закрывает соединение, я понятия не имею об этом в Tornado. Я видел этот вопрос о закрытии соединений автоматически по тайм-ауту (Implementing and testing WebSocket server connection timeout), и я собираюсь использовать его в качестве обходного пути.

Мой вопрос:: У Торнадо есть внутренний механизм для аннулирования соединений с сетевыми соединениями?

ответ

1

WebSocketHandler имеет метод переопределения on_close, который должен вызываться, когда соединение закрыто (большую часть времени). Однако этот метод не является на 100% надежным (из-за ограничений базовых сетевых протоколов), поэтому рекомендуется резервное резервное копирование по тайм-ауту. У Tornado нет встроенной поддержки для этого, поэтому вам придется реализовать его самостоятельно, возможно, таким же образом, как и с ответом, с которым вы связались.

+0

также ping (http://tornadokevinlee.readthedocs.org/en/latest/websocket.html#tornado.websocket.WebSocketHandler.ping) может быть хорошим для реализации этого без таймаута, но в «закрытом неожиданном» значении – kwarunek

+0

На самом деле я не уверен в ограничениях сетевого протокола. Веб-сайт браузера получает onClose событие даже в случае проблемы на базовом уровне сети (например, сервер получил сигнал об увольнении). Я проверил этот случай на стороне браузера. Поэтому я думаю, что это проблема, связанная с Торнадо. – frist

+0

«Сервер получил сигнал об увольнении» не является проблемой сетевого уровня. Попробуйте отключить кабель Ethernet. –

Смежные вопросы