Tornado websocket handler, self.close () está cerrando la conexión sin activar el método on_close ()
soy nuevo en (python, stackoverflow, tornado), así que por favor, sea paciente :). Corrígeme.
Estoy trabajando con tornado en una aplicación en tiempo real. Cuando llamo a self.close () dentro de la clase de manejador Websocket, el método on_close no se activa, por esta vez hice un pequeño envoltorio, solucionando el problema y (por ejemplo) descartando al agente conectado (cliente avss puro de avss) correctamente.
Todos los problemas de la red se descartan, ya que mi envoltura pobre funciona bien y estoy en un entorno LAN.
¿Alguien tiene el mismo problema? No puedo dormir sin una explicación.
Gracias enserio.
## 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 ...