Dieses Mal werde ich einen Chat mit Tornado erstellen, einem Webserver und Webframework von Python. Der Grund für die Verwendung von Tornado ist, dass es standardmäßig WebSocket unterstützt, sodass es einfach ist, Echtzeitdienste zu erstellen.
Die folgenden zwei werden verwendet.
Verwenden Sie Tornado auf der Serverseite und jquery.ui.chatbox auf der Clientseite. Mit jquery.ui.chatbox können Sie relativ einfach einen Chat erstellen.
Der folgende Code ist die Hauptverarbeitung auf der Serverseite. Es zeichnet die Nachrichten auf, die mit Personen gesendet wurden, die mit Kellnern und Nachrichten verbunden sind.
class ChatHandler(tornado.websocket.WebSocketHandler):
waiters = set()
logs = []
def open(self, *args, **kwargs):
self.waiters.add(self)
self.write_message({'logs': self.logs})
def on_message(self, message):
message = json.loads(message)
self.logs.append(message)
for waiter in self.waiters:
if waiter == self:
continue
waiter.write_message({'img_path': message['img_path'], 'message': message['message']})
def on_close(self):
self.waiters.remove(self)
Die Methode ** open ** registriert die Person, die eine Verbindung hergestellt hat, und sendet das Protokoll bisher an diese Person.
Die Methode ** on_message ** sendet die Nachricht, die gesendet wurde, als die Nachricht an andere Teilnehmer als Sie gesendet wurde. Fügen Sie außerdem die zu diesem Zeitpunkt gesendete Nachricht zum Protokoll hinzu.
Die Methode ** on_close ** entfernt den Konnektor von den Kellnern, wenn die Verbindung unterbrochen wird. Dies verhindert, dass die Nachricht an die nicht verbundene Person gesendet wird.
Das Folgende ist das fertige Produkt. Ich habe es in ungefähr einer Stunde geschafft, aber es funktioniert gut. Die Funktion besteht darin, dass Sie den Chat-Bildschirm öffnen und schließen können, indem Sie auf die Leiste oben klicken.
Klicken Sie auf den Link unten, um den Beispielcode anzuzeigen.
Diesmal habe ich mit Tornado eine Chat-App erstellt. Wenn Sie eine kleine Echtzeitanwendung in Python erstellen möchten, sollten Sie Tornado verwenden.
Recommended Posts