Tornado Python 如何处理客户端连接丢失
Posted
技术标签:
【中文标题】Tornado Python 如何处理客户端连接丢失【英文标题】:How Tornado Python handles drop of client connections 【发布时间】:2016-04-20 16:45:36 【问题描述】:我正在构建一个 Tornado websocket 应用程序来节省用户在 sql 表中的生存时间......我可以看到如果客户端连接断开(javascript 客户端)从服务器端没有任何反应......我想知道如何处理这个.
提前致谢
【问题讨论】:
嗨。当客户端断开连接时,您是否从 WebSocketHandler 调用了def on_close(self):
?
【参考方案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”吗?我坚持这一点以上是关于Tornado Python 如何处理客户端连接丢失的主要内容,如果未能解决你的问题,请参考以下文章