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 objectdata
:
GOOG
sets the data propertydata
:
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 ...
Get JavaScript: The Definitive Guide, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.