【发布时间】:2017-02-17 11:03:10
【问题描述】:
我正在运行一个带有 WebSocket 处理程序的 Python Tornado 服务器。 我们注意到,如果我们突然断开客户端(例如断开电缆),服务器没有任何迹象表明连接已断开。没有引发 on_close 事件。 有解决方法吗? 我读过有一个发送 ping 的选项,但没有看到有人在在线示例中使用它,也不知道如何使用它以及它是否能解决这个问题。
【问题讨论】:
-
你有答案
-
我们实现了 ping/pong:
def do_ping(self): if self.is_active: if not self.received_pong: self.retries += 1 if self.retries == 3: logger.info() self.on_close() return else: logger.info() self.received_pong = False self.ping('data') tornado.ioloop.IOLoop.current().call_later(20, self.do_ping) def on_pong(self, data): self.received_pong = True self.retries = 0