2009-05-21 7 views
6

Ich habe mich gefragt, ob es wirklich einen Vorteil gegenüber COMET/Push-Technologien gegenüber dem viel einfacheren Polling mit langen Anfragen gibt, wo der Server eine bestimmte maximale Zeit für neue Ereignisse wartet, bevor er den Clients mitteilt, dass nichts passiert ist.Vorteil von COMET über lange Anfrageabfragen?

Beide Technologien haben ähnliche Client-Latenzzeiten und während allgemeines Wissen ist, dass lange Anfragen schlechter sind, weil sie eine neue Verbindung herstellen müssen, gibt es auch die Tatsache, dass es HTTP keep-alive gibt - so scheinen am Ende beide produzieren eine sehr ähnliche Menge an Verkehr/Ladung.

Gibt es also einen klaren Vorteil bei der Verwendung von COMET?

+0

Nicht so weit, wie ich sehen kann ... (/ Ich frage mich, ob es so etwas wie einen Kometen-Fanboy gibt) – annakata

+0

@annakata Mögen Leute noch/ich diese Tage? – Pacerier

Antwort

12

AFAIK Abfrage mit langen Anfragen ziemlich IS Kometen. Abruf mit kurzen Anfragen ist nicht möglich.

+4

Bingo. Der Unterschied besteht darin, dass die Anfragen für einen langen Zeitraum offen gehalten werden, was auf dem Server schwierig ist. Wenn Sie das haben, haben Sie im Wesentlichen Kometen. – jvenema

0

Einige Vorteile ich mir vorstellen kann:

  • macht Client-Programmierung einfacher.
  • Minimale Latenz zwischen dem realen Ereignis und der Benachrichtigung, die den Client erreicht. Beim Polling hat dies eine mittlere Zeit von [POLL TIME]/2 und einen schlimmsten Fall von [POLL TIME].
  • Kann die im Server benötigten Ressourcen minimieren. Siehe zum Beispiel article. Dafür müssen neue Servertechnologien verwendet werden.
+1

Die von Ihnen beschriebene Latenz ist die, die Sie mit "kurzen Anfragen" bei langen Anfragen haben. Der Server verzögert die Antwort, bis ein Ereignis vorliegt oder ein maximales Timeout erreicht ist (um Verbindungstimeouts zu vermeiden). Dies bedeutet, dass Sie pro Minute etwa eine Anfrage stellen müssen, aber trotzdem fast keine Latenz haben, da das Ereignis auf dem Server die nächste Antwort auslöst. Der Client ist nicht so kompliziert. Der Client fordert einen einzelnen Ereignis-URI an und fordert ihn erneut an, sobald er eine Antwort erhält. – fforw