From ad15b8a25a25ae3c7e3d5ae4927fed2c61561699 Mon Sep 17 00:00:00 2001 From: j Date: Sat, 2 Feb 2019 12:57:46 +0530 Subject: [PATCH] watch websocket errors --- oml/websocket.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/oml/websocket.py b/oml/websocket.py index 27a3d4e..12795ce 100644 --- a/oml/websocket.py +++ b/oml/websocket.py @@ -49,7 +49,11 @@ class Handler(WebSocketHandler): #websocket calls def on_message(self, message): - action, data = json.loads(message) + try: + action, data = json.loads(message) + except json.decoder.JSONDecodeError: + logger.debug('invalid websocket message: %s', message) + return if state.tasks: state.tasks.queue(action, data) @@ -62,7 +66,17 @@ class Handler(WebSocketHandler): if self.ws_connection is None: self.on_close() else: - state.main.add_callback(lambda: self.write_message(message)) + state.main.add_callback(lambda: self._write_message(message)) + + async def _write_message(self, message): + try: + task = self.write_message(message) + await task + except tornado.iostream.StreamClosedError as e: + self.on_close() + except tornado.websocket.WebSocketClosedError as e: + self.on_close() + def trigger_event(event, data): #if len(state.websockets):