diff options
-rw-r--r-- | fg21sim/webui/websocket.py | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/fg21sim/webui/websocket.py b/fg21sim/webui/websocket.py index 1e9b9d6..a441272 100644 --- a/fg21sim/webui/websocket.py +++ b/fg21sim/webui/websocket.py @@ -119,8 +119,8 @@ class FG21simWSHandler(tornado.websocket.WebSocketHandler): The sent message also has a ``type`` item of same value, which the client can be used to figure out the proper actions. There is a ``success`` item which indicates the status of the - requested operation, and a ``data`` item containing the response - data. + requested operation, and an ``error`` recording the error message + if ``success=False``. """ logger.debug("WebSocket: %s: received: %s" % (self.name, message)) try: @@ -129,10 +129,14 @@ class FG21simWSHandler(tornado.websocket.WebSocketHandler): except json.JSONDecodeError: logger.warning("WebSocket: {0}: ".format(self.name) + "message is not a valid JSON string") - response = {"success": False, "type": None} + response = {"success": False, + "type": None, + "error": "message is not a valid JSON string"} except (KeyError, TypeError): logger.warning("WebSocket: %s: skip invalid message" % self.name) - response = {"success": False, "type": None} + response = {"success": False, + "type": None, + "error": "type is missing"} else: # Check the message type and dispatch task if msg_type == "configs": @@ -148,7 +152,9 @@ class FG21simWSHandler(tornado.websocket.WebSocketHandler): # Message of unknown type logger.warning("WebSocket: {0}: ".format(self.name) + "unknown message type: {0}".format(msg_type)) - response = {"success": False, "type": msg_type} + response = {"success": False, + "type": msg_type, + "error": "unknown message type %s" % msg_type} # msg_response = json.dumps(response) self.write_message(msg_response) @@ -190,24 +196,31 @@ class FG21simWSHandler(tornado.websocket.WebSocketHandler): if msg_action == "get": # Get the values of the specified options data, errors = self._get_configs(keys=msg_data) - response["success"] = True if errors == {} else False + response["success"] = True response["data"] = data response["errors"] = errors elif msg_action == "set": # Set the values of the specified options errors = self._set_configs(data=msg_data) - response["success"] = True if errors == {} else False - response["data"] = {} + response["success"] = True + response["data"] = {} # be more consistent response["errors"] = errors + elif msg_action == "reset": + raise NotImplementedError("TODO") + elif msg_action == "load": + raise NotImplementedError("TODO") + elif msg_action == "save": + raise NotImplementedError("TODO") else: logger.warning("WebSocket: {0}: ".format(self.name) + "unknown action: {0}".format(msg_action)) response["success"] = False - response["data"] = {} - response["errors"] = {} + response["error"] = "unknown action: {0}".format(msg_action) except KeyError: # Received message has wrong syntax/format - response = {"success": False, "type": msg_type, "action": None} + response = {"success": False, + "type": msg_type, + "error": "no action specified"} # logger.debug("WebSocket: {0}: ".format(self.name) + "response: {0}".format(response)) |