[whatwg] Detailed review of "Interpreting an event stream"
hmason at mac.com
Fri Aug 3 11:54:08 PDT 2007
I've been working on an implementation of Server-Sent DOM Events. I
ran into a small inconsistency in the specifications as they stand.
Under section 6.2.4's "Class field" part:
If the Namespace is null and the Event field is message (including
if it was not specified explicitly), then the MessageEvent
must be used.
Otherwise, the Event interface must be used.
I feel this should be changed and simplified to to:
Otherwise, the MessageEvent interface must be used.
Consider the following event stream (borrowed from Opera's sample
code http://labs.opera.com/news/2006/09/01/ )
As the spec currently stands, this will be interpreted as an event
which uses the Event interface, since the Event field is neither a
known DOM event type or message. However, since the specification
If a field does not match any of the attributes on the event, it
must be ignored.
The data field will be ignored, since the Event interface does not
have an attribute named data. In order to get the behavior wanted
here, you'd need to add a "Class: MessageEvent" field to the event
Opera 9.x already seems to implement this feature such that their
sample code works, so I'm presuming they're not doing it as its
specified in the spec.
Since section 6.1 of the spec already says:
Messages in cross-document messaging and, by default, in server-
sent DOM events, use the message event.
...it is not very consistent to make the default behavior change to a
different default behavior whenever the Event field is specified.
Most authors sending simple events probably don't want to have to
explicitly specify that the event they are sending is a MessageEvent,
and requiring it is almost sure to lead to confusion.
More information about the whatwg