Frage

Ich taste ein wenig mit WebSockets um, und war ziemlich zufrieden, wie einfach war es, ein Tornado-Server zum Laufen zu bringen, die grundlegenden websocket Verbindungen des Falles ist. Ich habe noch nie Tornado vor dem heutigen Tag verwendet, und während ich wie das, was ich dort gesehen habe ein paar Fragen ist, dass ich es in Bezug auf die Nutzung.

In erster Linie bin ich mit WebSockets, so dass ich mit geringem Overhead-Kommunikation zwischen zwei oder mehreren Client-Rechnern haben. (Für die Zwecke der Unterhaltung Sagen wir einfach, es ist ein Chat-Client) Offensichtlich ich in den Server von mehreren Rechnern verbinden können, und sie können alle Push-Nachrichten auf dem Server und dem Server kann reagieren, das ist toll! Aber das ist nicht zu viel besser als Ihre Standard AJAX-Anforderungen. Wenn ich eine dauerhafte Verbindung haben möchte ich in der Lage sein, Daten als auch für die Kunden zu schieben. Das einfachste mögliche Szenario ist, Benutzer 1 Beiträge eine Nachricht an den Server und darauf empfängt der Server sofort schiebt es auf Benutzer 2.

Also, was wäre ein guter Weg, das zu erreichen? Soweit ich in Tornado sehen kann, gibt es keine Möglichkeit, zwischen anderen Verbindungen als Platzieren der Nachricht in einem Datenspeicher irgendwo ist und alle anderen Verbindungen Umfrage für neue Informationen zu kommunizieren. Das erscheint mir furchtbar klobig aber, weil alle bist du wirklich an diesem Punkt tun wird, um den Abfrageprozess vom Client zum Server zu bewegen.

Natürlich kann ich den falschen Baum ganz hier bellen. Es ist sicherlich plausibel, dass Tornado einfach nicht das richtige Werkzeug für diesen Job ist, und wenn das der Fall ist würde ich gerne Vorschläge für Alternativen zu hören!

War es hilfreich?

Lösung

Hier ist ein Chat-Server mit Tornado, WebSockets und redis: https://gist.github.com/ pelletier / 532.067 ( Aktualisiert : link fixiert dank @SamidhT)

Andere Tipps

Auch wenn die Antwort wird bereits angenommen: einen anderen Dienst verwenden scheint immer noch sehr ineffizient zu mir. Warum Sie nicht einfach mit Shared-Memory + bedingten Variablen / Semaphore gehen? Sie klingen wie Sie ein Standard-Consumer-Producer Problem

got
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top