реализация пинг / понга для торнадо - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть websocket client в python, реализованном с использованием tornado.websocket. WebSocketClientConnection , который подключается к серверу на удаленном конце и обменивается данными по websocket. Ранее я реализовал механизм обратной связи типа ping/pong на уровне приложений, чтобы гарантировать, что удаленная конечная точка все еще реагирует.

Я только недавно обновил свой пакет tornado и наткнулся на ping_interval в WebSocketClientConnection. Я удалил старый механизм ping/pong на уровне приложений и добавил этот ping_interval в мою реализацию.

После этого обновления websocket закрывается после упомянутого ping_interval timeout. Сервер на удаленном конце обрабатывает ping на транспортном уровне и отвечает откровенно.

  1. В настоящее время я не реализовал метод ping, поэтому мне нужно реализовать метод ping для WebSocketClientConnection?,
  2. Должен ли я отправлять какие-либо данные в методе ping?
  3. Должен ли я реализовать какой-либо метод для обработки ответа, отправленного удаленным сервером на запрос ping?

1 Ответ

0 голосов
/ 06 сентября 2018
  1. Нет, Это реализовано по умолчанию .
  2. Вы можете, но не обязаны .
  3. Я предполагаю, что к отклику у вас есть понг. Если вы используете ping_interval, вам не нужно обрабатывать pong, но если вы отправляете эхо-запросы вручную, вы должны сами контролировать время ожидания, поэтому вам нужно обрабатывать pong с помощью метода tornado.websocket.WebSocketClientConnection.on_pong.
...