【问题标题】:How Tornado Python handles drop of client connectionsTornado Python 如何处理客户端连接丢失
【发布时间】:2016-04-20 16:45:36
【问题描述】:

我正在构建一个 Tornado websocket 应用程序来节省用户在 sql 表中的生存时间......我可以看到如果客户端连接断开(javascript 客户端)从服务器端没有任何反应......我想知道如何处理这个.

提前致谢

【问题讨论】:

  • 嗨。当客户端断开连接时,您是否从 WebSocketHandler 调用了def on_close(self):?

标签: python websocket tornado


【解决方案1】:

tornado websocket 处理程序中有一个 on_close 方法,将在连接关闭时调用:

class WSHandler(tornado.websocket.WebSocketHandler):
    def check_origin(self, origin):
        return True

    def open(self, poll_id):
        print 'new connection'

    def on_message(self, message):
        print 'message received %s' % message

    def on_close(self):
        print 'connection closed'

    def send_message(self, msg):
        self.write_message(msg)

【讨论】:

  • 我知道.. 但是 on_close 方法不能处理来自客户端的网络连接丢失...如果我从我的一个客户端拔下网络电缆,websocket 连接似乎仍然打开.. id 喜欢知道如何处理。
  • 无法保证系统会检测到未使用的网络连接的问题。您需要偶尔使用连接(使用 WebSocketHandler.ping)才能检测到失败的连接。
  • 好吧,我虽然 ping 是正确的方式,但 javascript api 不处理 ping pong 请求,所以我应该将消息发送为“ping”吗?我坚持这一点
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多