class MyServerProtocol(WebSocketServerProtocol): def onConnect(self, request): uid = request.params.get('uid') if not uid: self.close() uid = uid[0] self.subscriber = Subscriber() try: self.subscriber.websocket_attach(self, uid) except UidNotExists: self.close() self.uid = uid log.msg("Client connecting: {0}".format(request.peer)) def onOpen(self): log.msg("WebSocket connection open.") def onMessage(self, payload, isBinary): if isBinary: log.msg("Binary message received: {0} bytes".format(len(payload))) else: log.msg("Text message received: {0}".format(payload.decode('utf8'))) self.subscriber.websocket_data(self, self.uid, payload) def onClose(self, wasClean, code, reason): if self.uid: try: self.subscriber.websocket_deattach(self, self.uid) except Exception, e: log.err(e) log.msg("WebSocket connection closed: {0}".format(reason))