Some weeks ago I had a discussion (in Spanish, rough translation) with colleagues about the meaning of Comet. We all know Wikipedia is today the considered to be the primary reference for an accurate definition of Comet, in fact this entry is heavily based on the original definition of Alex Russell and work of other CometDaily contributors like Jacob Rus.
The open nature of Wikipedia is both a blessing and an ordeal, a well documented version of the Comet article in Wikipedia was heavily stripped down some time ago as the result of a hard battle between Jacob and a Wikipedia editor. Fortunately the old version was “accepted” again (Jacob finally “won”).
There are two different ways to understand Comet:
- As Server Push: the technique is the focus, with server push we mean the server initiates the notification. If “Comet = Server Push”, Ajax polling is not Comet.
- As Real Time Web: we mean real time web when the web page changes with no user action when a change in the application context occurs (some delay between the event and the notification to the web page may be accepted) and this change is smart, that is to say, only the involved area of the web page changes and only when something must to change (a full reload is not accepted). If “Comet = Real Time Web” Ajax polling IS Comet too.
If you read the Wikipedia, Jacob favors Comet as “Server Push” following the wake of Alex’s original definition. Greg Wilkins has also asked about The definition of Comet?
I myself have considered Comet = “Server Push”, influencing the terminology used in ItsNat, and was confused when an article by Kris Zyp put AJAX polling into the bag of Comet, in a comment I attempted to correct Kris.
Sorry Kris, I agree with you, I have changed my mind!
Comet should be equivalent to “Real Time Web” because this definition remarks the objective, automatic notification with no user intervention when something occurs, because it defines the value added that is introduced to typical “passive” web applications. Ajax polling, long polling, forever frame, etc. just are the techniques used to achieve this objective.
If you search Google for “Real Time Web”, the first results are deceptive, Comet is missing. We can change this.
Should be Comet = Real Time Web or Comet = Server Push?