webthing/server.py
def on_message(self, message):
        """
        Handle an incoming message.

        message -- message to handle
        """
        try:
            message = json.loads(message)
        except ValueError:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Parsing request failed',
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass

            return

        if 'messageType' not in message or 'data' not in message:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Invalid message',
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass

            return

        msg_type = message['messageType']
        if msg_type == 'setProperty':
            for property_name, property_value in message['data'].items():
                try:
                    self.thing.set_property(property_name, property_value)
                except PropertyError as e:
                    self.write_message(json.dumps({
                        'messageType': 'error',
                        'data': {
                            'status': '400 Bad Request',
                            'message': str(e),
                        },
                    }))
        elif msg_type == 'requestAction':
            for action_name, action_params in message['data'].items():
                input_ = None
                if 'input' in action_params:
                    input_ = action_params['input']

                action = self.thing.perform_action(action_name, input_)
                if action:
                    tornado.ioloop.IOLoop.current().spawn_callback(
                        perform_action,
                        action,
                    )
                else:
                    self.write_message(json.dumps({
                        'messageType': 'error',
                        'data': {
                            'status': '400 Bad Request',
                            'message': 'Invalid action request',
                            'request': message,
                        },
                    }))
        elif msg_type == 'addEventSubscription':
            for event_name in message['data'].keys():
                self.thing.add_event_subscriber(event_name, self)
        else:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Unknown messageType: ' + msg_type,
                        'request': message,
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass
def on_message(self, message):
        try:
            message = json.loads(message)
        except ValueError:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Parsing request failed',
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass

            return

        if 'messageType' not in message or 'data' not in message:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Invalid message',
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass

            return

        msg_type = message['messageType']
        if msg_type == 'setProperty':
            for property_name, property_value in message['data'].items():
                try:
                    self.thing.set_property(property_name, property_value)
                except PropertyError as e:
                    self.write_message(json.dumps({
                        'messageType': 'error',
                        'data': {
                            'status': '400 Bad Request',
                            'message': str(e),
                        },
                    }))
        elif msg_type == 'requestAction':
            for action_name, action_params in message['data'].items():
                input_ = None
                if 'input' in action_params:
                    input_ = action_params['input']

                action = self.thing.perform_action(action_name, input_)
                if action:
                    tornado.ioloop.IOLoop.current().spawn_callback(
                        perform_action,
                        action,
                    )
                else:
                    self.write_message(json.dumps({
                        'messageType': 'error',
                        'data': {
                            'status': '400 Bad Request',
                            'message': 'Invalid action request',
                            'request': message,
                        },
                    }))
        elif msg_type == 'addEventSubscription':
            for event_name in message['data'].keys():
                self.thing.add_event_subscriber(event_name, self)
        else:
            try:
                self.write_message(json.dumps({
                    'messageType': 'error',
                    'data': {
                        'status': '400 Bad Request',
                        'message': 'Unknown messageType: ' + msg_type,
                        'request': message,
                    },
                }))
            except tornado.websocket.WebSocketClosedError:
                pass
def on_message ( self , message ) : try : message = json . loads ( message ) except ValueError : try : self . write_message ( json . dumps ( { 'messageType' : 'error' , 'data' : { 'status' : '400 Bad Request' , 'message' : 'Parsing request failed' , } , } ) ) except tornado . websocket . WebSocketClosedError : pass return if 'messageType' not in message or 'data' not in message : try : self . write_message ( json . dumps ( { 'messageType' : 'error' , 'data' : { 'status' : '400 Bad Request' , 'message' : 'Invalid message' , } , } ) ) except tornado . websocket . WebSocketClosedError : pass return msg_type = message [ 'messageType' ] if msg_type == 'setProperty' : for property_name , property_value in message [ 'data' ] . items ( ) : try : self . thing . set_property ( property_name , property_value ) except PropertyError as e : self . write_message ( json . dumps ( { 'messageType' : 'error' , 'data' : { 'status' : '400 Bad Request' , 'message' : str ( e ) , } , } ) ) elif msg_type == 'requestAction' : for action_name , action_params in message [ 'data' ] . items ( ) : input_ = None if 'input' in action_params : input_ = action_params [ 'input' ] action = self . thing . perform_action ( action_name , input_ ) if action : tornado . ioloop . IOLoop . current ( ) . spawn_callback ( perform_action , action , ) else : self . write_message ( json . dumps ( { 'messageType' : 'error' , 'data' : { 'status' : '400 Bad Request' , 'message' : 'Invalid action request' , 'request' : message , } , } ) ) elif msg_type == 'addEventSubscription' : for event_name in message [ 'data' ] . keys ( ) : self . thing . add_event_subscriber ( event_name , self ) else : try : self . write_message ( json . dumps ( { 'messageType' : 'error' , 'data' : { 'status' : '400 Bad Request' , 'message' : 'Unknown messageType: ' + msg_type , 'request' : message , } , } ) ) except tornado . websocket . WebSocketClosedError : pass
Handle an incoming message.

        message -- message to handle
Handle an incoming message .