def onMessage(self, payload, isBinary):
        if isBinary:
            log.debug("Binary message received: {bytes} bytes", bytes=len(payload))
            response = {'error': 'Protocol Error: unhandled message format'}
        else:
            message_string = payload.decode('utf8')
            log.debug("Text message received: {message}", message=message_string)
            message = json.loads(message_string)
            if 'action' in message:
                if 'status' == message['action']:
                    response = {'status': self.factory.led.status}
                elif 'set' == message['action']:
                    status = message.get('value')
                    try:
                        if status:
                            self.factory.led.on()
                        else:
                            self.factory.led.off()
                        response = {'status': status}
                        self.factory.broadcast(json.dumps(response, ensure_ascii=False).encode('utf8'))
                    except Exception as e:
                        log.error("Unable to update output: {error}", error=e)
                        pass

                    return
                else:
                    response = {'error': 'Protocol Error: unhandled action'}
            else:
                response = {'error': 'Protocol Error: unhandled verb'}

            response = json.dumps(response, ensure_ascii=False)

        self.sendMessage(response.encode('utf8'), isBinary=False)
Exemple #2
0
 def onMessage(self, payload, isBinary):
     if isBinary:
         log.debug("Binary message received: {bytes} bytes",
                   bytes=len(payload))
     else:
         message_string = "{1} ({0})".format(self.peer,
                                             payload).decode('utf8')
         log.debug("Text message received: {message}",
                   message=message_string)
         self.factory.broadcast(message_string)
Exemple #3
0
 def _parseSSLOptions(self, options):
     result = []
     if options is not None:
         for option in options:
             try:
                 result.append(getattr(SSL, option))
             except AttributeError:
                 log.debug(
                     'Invalid SSL option for this system: "{}", ignoring...'
                     .format(option)
                 )
     return result
Exemple #4
0
    def onMessage(self, payload, isBinary):
        if isBinary:
            log.debug("Binary message received: {bytes} bytes",
                      bytes=len(payload))
            response = {'error': 'Protocol Error: unhandled message format'}
        else:
            message_string = payload.decode('utf8')
            log.debug("Text message received: {message}",
                      message=message_string)
            message = json.loads(message_string)
            if 'action' in message:
                if 'status' == message['action']:
                    response = {'status': self.factory.led.status}
                elif 'set' == message['action']:
                    status = message.get('value')
                    try:
                        if status:
                            self.factory.led.on()
                        else:
                            self.factory.led.off()
                        response = {'status': status}
                        self.factory.broadcast(
                            json.dumps(response,
                                       ensure_ascii=False).encode('utf8'))
                    except Exception as e:
                        log.error("Unable to update output: {error}", error=e)
                        pass

                    return
                else:
                    response = {'error': 'Protocol Error: unhandled action'}
            else:
                response = {'error': 'Protocol Error: unhandled verb'}

            response = json.dumps(response, ensure_ascii=False)

        self.sendMessage(response.encode('utf8'), isBinary=False)
Exemple #5
0
 def onClose(self, wasClean, code, reason):
     self.factory.unregister(self)
     log.debug("WebSocket connection closed: {reason}", reason=reason)
Exemple #6
0
 def onOpen(self):
     log.debug("WebSocket connection open.")
Exemple #7
0
 def onConnect(self, request):
     log.debug("Client connecting: {peer}", peer=request.peer)
     self.factory.register(self)
Exemple #8
0
 def broadcast(self, msg):
     log.debug("broadcasting prepared message '{msg}' ..", msg=msg)
     message = self.prepareMessage(msg)
     for c in self.clients:
         c.sendPreparedMessage(message)
         log.debug("prepared message sent to {peer}", peer=c.peer)
Exemple #9
0
 def unregister(self, client):
     if client in self.clients:
         log.debug("unregistered client {client}", client=client)
         self.clients.remove(client)
Exemple #10
0
 def register(self, client):
     if client not in self.clients:
         log.debug("registered client {peer}", peer=client.peer)
         self.clients.append(client)
 def onClose(self, wasClean, code, reason):
     self.factory.unregister(self)
     log.debug("WebSocket connection closed: {reason}", reason=reason)
 def onOpen(self):
     log.debug("WebSocket connection open.")
 def onConnect(self, request):
     log.debug("Client connecting: {peer}", peer=request.peer)
     self.factory.register(self)
 def broadcast(self, msg):
     log.debug("broadcasting prepared message '{msg}' ..", msg=msg)
     message = self.prepareMessage(msg)
     for c in self.clients:
         c.sendPreparedMessage(message)
         log.debug("prepared message sent to {peer}", peer=c.peer)
 def unregister(self, client):
     if client in self.clients:
         log.debug("unregistered client {client}", client=client)
         self.clients.remove(client)
 def register(self, client):
     if client not in self.clients:
         log.debug("registered client {peer}", peer=client.peer)
         self.clients.append(client)