Frage

Ich tue Comet-Chat mit Erlang. Ich benutze nur eine Verbindung (Lang Polling) für den Nachrichtentransport. Aber, wie Sie wissen, ist die langfris Polling-Verbindung kann nicht sein Aufenthalt die ganze Zeit verbunden. Jedes Mal, wenn eine neue Nachricht kommt oder erreicht das Timeout, wird es brechen und dann wieder mit dem Server verbinden. Wenn eine Nachricht, bevor die Verbindung wieder angeschlossen gesendet wird, ist es ein Problem, die Integrität der Chat zu halten.

Und auch, wenn ein Benutzer mehr als ein Fenster mit Comet-Chat öffnet, werden alle Chat-Nachrichten haben synchron zu halten, was bedeutet, ein Benutzer eine Menge Lang Polling-Verbindungen haben. So ist es schwierig, jede einzelne Nachricht pünktlich geliefert zu halten.

Soll ich bauen für jede Verbindung eine Message Queue? Oder was sonst noch besserer Weg, dies zu lösen?

War es hilfreich?

Lösung

Für mich einfachste Art und Weise scheint einen Prozess / Nachrichtenwarteschlange haben pro Benutzer verbunden chatten (auch mehr als ein Chat-Fenster). Als Auge behalten Zeitstempel der letzten Nachricht in Chat-Fenster-Anwendung und wenn Reconnect für Nachrichten nach diesem Zeitstempel fragen. Message Queue-Prozess sollte hält Nachrichten nur für einen vernünftigen Zeitspanne. In diesem Szenario reconnecting ist alles bis zu Kunden. In einem anderen Szenario können Sie eine Art hart schlägt vom Server senden, aber es scheint weniger zuverlässig für mich. Es ist nicht mit anderem Grunde der Trennung als Timeout zu lösen Problem. Es gibt viele Varianten von Server-Seite als eine Warteschlange pro Client Schlange stehen, pro Benutzer und Chat-Raum, pro ...

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