我可以在 Tornado 中获取断开连接的客户端的 IP 地址和端口吗
Can I get IP address and port of disconnected client in Tornado
当前,当我的龙卷风服务器收到一个 'connection opened' 事件时,我将客户端的 WebSocketHandler 存储在一个 players
字典中,其键为 IP/port 组合。
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()
...
当前,当我的龙卷风服务器收到一个 'connection opened' 事件时,我将客户端的 WebSocketHandler 存储在一个 players
字典中,其键为 IP/port 组合。
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()
...