2009-07-14 9 views
2

Ich mache Comet Chat mit Erlang und PHP. Aber jetzt denke ich, dass ich ein Problem gefunden habe: Die Polling-Verbindung wird sich automatisch trennen und neu verbinden in ungefähr einer bestimmten Zeit (ich setze dies mit 10 Sekunden), so dass es eine Zeitperiode geben wird, in der der Benutzer keine Verbindung zum Chat Server herstellt. Wenn ein Benutzer zu diesem Zeitpunkt eine Nachricht sendet, ist die Nachricht tot (niemand könnte sie empfangen).Wie vermeidet man eine tote Nachricht im Comet-Chat?

Im Client-Code verwende ich jquery mit jsonp, um die Abrufverbindung zu realisieren. Gibt es einen guten Weg, dieses Problem zu lösen?

Vielen Dank im Voraus ~

Antwort

0

Wenn eine Nachricht gesendet wird, hat jquery nur sofort wieder an und die Nachricht senden, wenn es so tut.

1

Sie haben zwei gleichzeitige Verbindungen; verschachteln Sie sie, so dass man sich verbindet (und die Nachrichten des Benutzers an den Server schiebt), während der andere zuhört.

1

Haben Sie einen Sitzungsprozess auf dem Server, der alle Nachrichten speichert, während der Client nicht verbunden ist. Wenn der Client für einige (konfigurierbare) Zeit keine Verbindung herstellt, kann die Sitzung beendet werden. Wenn der Client eine Verbindung herstellt, kann die Sitzung alle Nachrichten in der Warteschlange an die Verbindung senden.

+0

Vielleicht eine gute Idee, wie eine Mailbox. Aber ich muss die Kosten berücksichtigen, wenn ich für jede Verbindung eine Mailbox erstelle. Irgendwelche Vorschläge? –

+0

Wenn die Nachrichten Binärdateien/Atome sind, werden Sie nur Zeiger speichern und wenn das Zeitlimit vernünftig ist, haben Sie keine Zeit, so viel aufzubauen. – puzza007

Verwandte Themen