class ChatWebSocket(tornado.websocket.WebSocketHandler): """ Handler für Websocketverbindungen. Diese Klasse implementiert den Tornado-Handler für neue Websocketverbindungen. D.h., dass es für jede neue Verbindung eine neue Instanz dieser Klasse erstellt wird. Er implementiert die Methoden 'open()', 'on_close()' und 'on_message()', als Schnittstellen vom Webserver. Außerdem bietet er die Methode 'response()' an umd einen threadsicheren Kanal zum Socket zu bieten. """ def open(self): #@ReservedAssignment """ Handler für neue Verbindungen. Erstellt einen neuen Client. """ self.client = ChatClient(self) def on_close(self): """ Handler für das Beenden einer Verbindung. Teilt dem Client mit, dass die Verbindung geschlossen wird und löscht diesen dann, damit er (hoffentlich) vom Garbarge-Collector gelöscht wird. """ if hasattr(self, "client"): self.client.close() del self.client def on_message(self, message): """ Handler für neue eintreffende Nachrichten. Dieser Handler wandelt den JSON-String in ein Objekt um und teilt dem Worker mit, dass er die neue Nachricht abarbeiten soll. """ try: request = json.loads(message) event = request.pop('event') worker.add(self.client.request, args=(event,), kwargs=request) except Exception, e: self.exception_response(e)
def open(self): #@ReservedAssignment """ Handler für neue Verbindungen. Erstellt einen neuen Client. """ self.client = ChatClient(self)