2010-06-04 8 views
8

Ich muss einen Chat wie Facebook Chat erstellen.Comet VS Ajax Polling

Mit Comet brauche ich mehr Speicher, um die Verbindung zu halten.

Mit Ajax Polling gibt es ein Latenz Problem, wenn ich Anfrage alle 3-4 Sekunden sende.

Also ... Wenn die Latenz (3-4 Sekunden) keine Rolle spielt, ist Ajax Polling besser für meinen Fall?

+1

Ich denke, Sie haben gerade Ihre eigene Frage beantwortet :) –

Antwort

1

Wenn Latenz kein Problem ist, dann ist AJAX wahrscheinlich besser. Comet kann Probleme haben, mehrere Verbindungen zwischen demselben Client/Server-Paar aufrechtzuerhalten, wenn Sie nicht sehr, sehr vorsichtig sind. (Ref)

6

Latenz ist nicht das einzige Problem. COMET (Long-Polling) "speichert" Ihren Datenverkehr - wenn Sie Polling verwenden, können Sie nicht wissen, ob es Änderungen auf dem Server gab, so dass einige der Anrufe nur eine Verschwendung von Verkehr und Ressourcen sind (z. B. auch wenn niemandem etwas passiert) Chatten, du machst alle 3-4 Sekunden telefonieren. Im Falle von COMET benötigen Sie in der Regel nur einen Anruf, um ein Update vom Server zu erhalten (mit 100% Trefferquote).

+2

aber mit Comet, brauche ich mehr Speicher, um die Verbindungen offen zu halten ... nein? – xRobot

+1

Eine Verbindung selbst zu halten ist nicht so schädlich. Der Speicherverbrauch hängt mehr von der serverseitigen IO-API ab, die Sie auswählen - blockieren oder nicht blockieren. Wenn Sie die blockierende API wählen, haben Sie einen Thread pro Verbindung -> Speicherprobleme mit 3-4k offenen Verbindungen. Wenn Sie eine nicht blockierende API wählen (fast jeder Anwendungsserver verfügt über NIO-Funktionen), können Sie Millionen geöffneter Verbindungen beibehalten. –

+1

Sie können dies interessant finden - http://iobound.com/2008/11/comet-nio/ –

2

@Vasil: "Sie Millionen geöffnete Verbindung halten können"

Werfen Sie einen Blick to this problem

Und the false superiority von NIO über IO über.

Der iobound Artikel zeigt nur IO übertrifft NIO und ja IO geht aus dem Speicher vor NIO (übrigens hat der Autor nicht versucht, den Stapelspeicher mit einem niedrigeren Wert zu reduzieren).

Verwandte Themen