I always wondered why plain old multipart/mixed was never used, with
Content-Location headers per part.  It would even be more general,
permitting multiple streams to be muxed over a single connection.

I agree, multipart/x-mixed-replace is a strange content type for streams of messages. From a functional standpoint it does not matter, Alex and I simply want something that can provide a stream of messages from the server. From a semantic perspective, x-mixed-replace is supposed to indicate each part in the multipart stream is intended to be a replacement of the previous part. This is nice for webcams (kind of the big use case originally, I think). However, this is not an accurate representation of what is intended with most server-sent message communication, each part should conceptually represent a new message in a log of messages. If multipart handling is to be defined, it may as well allow other more meaningful multiparts content types. Also, I believe multipart/mixed is not intended to have HTTP headers (like Content-Location and many other meaningful headers), only a Content-Type header. multipart/message would be preferable in that it allows the full range of HTTP headers to be included. I believe the most semantically correct and efficient content type would be message/http, where the content body is itself a stream in the format of HTTP (response) messages. A stream of HTTP messages can easily be partitioning into parts (without requiring the overhead of part boundaries), and each part can have it's own flexible set of meaningful HTTP headers.


* that a new settable property be added to XHR objects which controls how the HTTP connection created by the object is accounted for against the HTTP
1.1 specified 2-connection limit.

Not sure what you mean by "accounted for", but HTTP doesn't specify
that limit, it's just defacto via implementation.
HTTP _does_ specify that limit. See section 8.1.4:
"A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy." By "accounted for" he means that it should be possible to specify that the current XHR connection should not count against the 2-connection limit and the browser should be free to use two additional persistent connections.

, it may be
preferable for servers to be able to provide a header which effectively
discounts the connection or a client-side toggle which allocates the
connection against a different, per-document limit of connections (up to
some high global maximum).

What would the toggle do?  It seems to me that browsers just need the
per-document connection limit you mention.
The toggle would allow sites to opt-in, so that servers don't see an increase in parallel connections without consent. Of course the increase due to per-document connection limits would almost certainly be negligible and doing per-document connection accounting all the time would certainly not be opposed by us.

Another functionality that I believe would be extremely valuable to expose for XHR would be HTTP pipelining control. Most browsers do not provide HTTP pipelining because of compatibility concerns and performance implications of improperly order requests. However, for conforming servers, pipeling improves performance, and if XHR users could opt-in to pipelining, they could do so with knowledge of their server's pipelining capabilities and the correct request ordering. This can provide a particularly valuable capability in server-sent messaging systems. Requests can be explicitly pipelined on the same connection as a long term streaming response, creating true full-duplex over a single tcp connection (without violating HTTP), which is more efficient and sensible than using two connections for duplex communication. Of course being able to designate pipelining would be useful for performance for general XHR purposes as well.
Thanks,
Kris


Reply via email to