print("WebSocket connection closed: {0}".format(reason)) def connectionLost(self, reason): print('connection lost: ' + reason.getErrorMessage()) self.factory.numClients = self.factory.numClients - 1 self.factory.clients.remove(self) msg = {'type': 'USER_LEFT', 'value': self.userId} msgToSend = json.dumps(msg) for client in self.factory.clients: if self.name is not None: client.sendMessage(msgToSend.encode('utf-8')) if __name__ == '__main__': log.startLogging(sys.stdout) factory = WebSocketServerFactory(u"ws://127.0.0.1:9000") factory.protocol = MyServerProtocol factory.clients = [] # note to self: if using putChild, the child must be bytes... loop = Loop('Periodic Loop', factory, bms, display) loop.start() signal.signal(signal.SIGINT, signal_handler) reactor.listenTCP(9000, factory) reactor.run()
except (JSONDecodeError, UnicodeDecodeError): return {} def _digest_incoming_data(self, data): _data = self.load(data) if not _data: return try: method = getattr(self, _data.get("operation")) except AttributeError: return method(_data.get("payload")) def transfer(self, payload, to=None): if not to: to = self.transport print(payload) self.sendMessage(json.dumps(payload).encode("utf-8")) if __name__ == '__main__': factory = WebSocketServerFactory(u"ws://172.20.10.3:8585") factory.protocol = EiderProtocol factory.clients = dict() # noinspection PyUnresolvedReferences reactor.listenTCP(8585, factory) # noinspection PyUnresolvedReferences reactor.run()