我可以得到Tornado中断开连接的客户端的IP地址和端口
问题描述:
当我的龙卷风服务器收到“连接打开”事件时,我将客户端的WebSocketHandler存储在players
字典中,其关键字是和IP /端口组合。我可以得到Tornado中断开连接的客户端的IP地址和端口
players = {}
class WSHandler(tornado.websocket.WebSocketHandler):
def open(self):
global players
players[self.get_id()] = self
def get_id(self):
ip = self.request.remote_ip
port = str(self.stream.socket.getpeername()[1])
return ip + ":" + port
我想在连接关闭时从dict
移除播放器。类似的东西:
class WSHandler(tornado.websocket.WebSocketHandler):
def on_close(self):
global players
players.pop(self.get_id(), None)
该端口似乎不可访问,所以我不能重新创建我以前设置的ID。是否有可能以其他方式检索端口?
答
每个连接会创建自己的WSHandler
实例,因此简单地将数据存储上初始化实例:
def open(self):
self.id = self.get_id()
...
商店ID作为一个实例属性...? 'self.id = self.get_id()'。然后稍后可用。 (我_believe_ Tornado为每个连接创建一个新的'WSHandler'实例,所以应该这样做。) – deceze
完美,不知道为什么我没有想到 – sookie