O manipulador do websocket Tornado, self.close () está fechando a conexão sem disparar o método on_close ()
sou novo em (python, stackoverflow, tornado), então por favor, seja paciente :). Me corrija.
Estou trabalhando com tornado em um aplicativo em tempo real. Quando eu chamo self.close () dentro da classe de manipulador Websocket, o método on_close não é acionado; nesse momento, criei um pequeno invólucro, corrigindo o problema e (por exemplo) descartando esse agente conectado (cliente avi wss api) corretamente.
Todos os problemas de rede são descartados, pois meu invólucro ruim está funcionando bem e estou em um ambiente de LAN.
alguém está tendo o mesmo problema? Eu não consigo dormir sem uma explicação.
OBRIGADO, sério.
## imports and other stuff
AGENTS = set()
class BackofficeWSSRailMain(tornado.websocket.WebSocketHandler):
def on_open(self):
pass
def on_message(self,raw_message):
json_msg=json.loads(raw_message)
login = function_that_process_login(json_msg)
if login == True:
AGENTS.add(self)
self.write_message("ok")
else:
self.write_message("nologin")
self.close() ### this part should fireup
### the on_close method but nothing
### happens so AGENT is not discarded.
### here is when i actually call on_close_wrapper(),
### the method below.
def on_close_wrapper(self):
self.close() ### this is my actual solution ,
### waiting for more research.
self.on_close()
def on_close(self):
AGENTS.discard(self)
## Calling ioloop ...