Push processing and Web Socket Protocol

I just became aware of the "Web Socket Protocol" [1] that Ian Hickson has 
published through IETF.    The draft says:

"This document is automatically generated from, and is therefore a  subset 
of, the HTML5 specification produced by the WHATWG", but as far as I can 
tell, the text of [1] does not appear in recent versions of the HTML5 
draft.  Anyway, I'm far from expert on this, but taken together with the 
Web Sockets API, this seems to give HTML 5 applications the ability to use 
Javascript to open what is ultimately a full duplex, non-HTTP connection, 
optionally through a proxy or firewall, to exchange information with a 
server using a non-HTTP protocol documented at [1].   The intended 
applications appear primarily to be Comet-like push data transfers to Ajax 
applications, though the protocol is bidirectional and could in principle 
be used for a variety of non-HTTP data exchanges.

 If I understand the data transmission part of the protocol, it boils down 
to sending sequences of frames, encoded as UTF-8, delimited with a 0x00 
byte to start and a 0xFF byte to end each frame.

Where I said that what is opened is "ultimately" a non-HTTP connection, I 
was referring to the fact that connections are initiated and proxies and 
firewalls are traversed by sending an HTTP  GET with:

        Upgrade: WebSocket
        Connection: Upgrade

The successful response to which is:

        HTTP/1.1 101 Web Socket Protocol Handshake
        Upgrade: WebSocket
        Connection: Upgrade

>From there, the non-HTTP full duplex traffic begins, as I understand it.

Question:  has anyone on the TAG looked at this?  Comet and similar 
techniques aren't new, but it does seem to be worth asking whether [1] 
and/or [2] raise any Web architecture issues of concern to the TAG. FWIW: 
I'm not offering an opinion one way or the other at this point, just 
asking.  FWIW: the use of upgrade looks to me pretty much consistent with 
the letter and spirit of section 14.42 of RFC 2616 [3], though I'm a 
little curious as to whether there's an implicit requirement that the 
information exchanged must be representations of the resource identified 
by the original request URI.  Anyway, I just want to make sure that we are 
all comfortable with this from a Web architecture point of view.  Thank 
you.

Noah

[1]  http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-15
[2] http://dev.w3.org/html5/websockets/
[3] http://www.ietf.org/rfc/rfc2616.txt

--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------

Received on Friday, 5 June 2009 19:24:58 UTC