Cover by David Flanagan

Safari, the world’s most comprehensive technology and business learning platform.

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required

O'Reilly logo

Comet with Server-Sent Events

The Server-Sent Events draft standard defines an EventSource object that makes Comet applications trivial to write. Simply pass a URL to the EventSource() constructor and then listen for message events on the returned object:

var ticker = new EventSource("stockprices.php");
ticker.onmessage = function(e) {
    var type = e.type;  
    var data = e.data;

    // Now process the event type and event data strings.
}

The event object associated with a message event has a data property that holds whatever string the server sent as the payload for this event. The event object also has a type property like all event objects do. The default value is “message”, but the event source can specify a different string for the property. A single onmessage event handler receives all events from a given server event source, and can dispatch them, if necessary, based on their type property.

The Server-Sent Event protocol is straightforward. The client initiates a connection to the server (when it creates the EventSource object) and the server keeps this connection open. When an event occurs, the server writes lines of text to the connection. An event going over the wire might look like this:

event: bid  sets the type of the event object
data: GOOG  sets the data property
data: 999   appends a newline and more data
            a blank line triggers the message event

There are some additional details to the protocol that allow events to be given IDs and allow a reconnecting client to tell the server what ...

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required