0
現在、私の竜巻サーバーは「接続が開かれました」イベントを受信すると、クライアントのWebSocketHandlerをplayers
dictのキーとIP /ポートコンボで保存します。私がやりたいのは何トルネードで切断されたクライアントの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を再作成できません。他の方法でポートを取得することは可能ですか?
ストアIDをインスタンス属性として...? 'self.id = self.get_id()'その後、それは後で利用可能です。 (私の_believe_ Tornadoはそれぞれの接続に対して新しいWSHandlerインスタンスを作成するので、これが必要です。) – deceze
パーフェクト、なぜ私はそれを考えなかったのか分かりません – sookie