- From: Wenbo Zhu <wenboz@google.com>
- Date: Fri, 14 May 2010 15:16:35 -0700
- To: Henrik Nordström <henrik@henriknordstrom.net>
- Cc: Jamie Lokier <jamie@shareable.org>, ietf-http-wg@w3.org
On Fri, May 14, 2010 at 11:09 AM, Henrik Nordström <henrik@henriknordstrom.net> wrote: > fre 2010-05-14 klockan 18:33 +0100 skrev Jamie Lokier: > >> It is possible to implement servers where the response is an >> incremental function of the request, and if it worked reliably, that >> would actually be useful. > > There is applications operating in this manner, but the HTTP transport > isn't well suited for this as you have no control over any buffering > done by intermediary servers or even clients http frameworks operate. > >> As far as I can tell, it would be within the HTTP specs if a new >> client was deliberately made which supported bidirectional streaming >> POSTs over a single connection, and a new server took advantage of >> that when it knew the client supported it. > > Yes, and such clients do exists, even if most select to either do it > over an SSL connection or by using two parallell requests. > >> Then the sticking point would be what proxies do. > > Depends on the purpose of the proxy. > >> That requirement says nothing about *non-error* codes. What part of >> accepting those while continuing to send the request is broken? Or >> alternatively of not accepting those? > > None, other than me reading a bit too quickly. > >> Do you think the above idea, of a client supporting it and a server >> making use of it if it knows the particular client supports it, would >> work now? That would halve the number of connections needed for >> comet-style interactions. > > It will work in most environments, but you will find networks where > intermediary proxies do buffer considerable amount of data or which may > even serialize it down to request->response pattern. HTTP does not > provide any guarantee that full duplex communication will work. True. Then the question remains: 1) the behavior is disallowed by the spec as it's not reliable - due to proxies (if not ideologically); or 2) the behavior is supported, with all the implementation caveats and related best-effort/fall-back concerns. I am less concerned about breaking existing clients, as such a behavior is completely controlled by the server, and specially enabled for custom applications. > >> I mostly agree with Henrik, but if it's already common practice for >> clients to abort when they see part of a non-error response, then I'm >> in favour of the spec reflecting reality, instead of ignoring it. > > Depends on where you draw the boundary for the client. If you include > the end user behavior in the client then most users do not wait for > their browser to finish sending something if they have already got the > response they are expecting. > > Most if not all clients if left alone by their user will happily > continue sending the request without interruption provided the server > does not close the connection on them. > > But some clients or intermediaries MAY get confused and think they are > done when the server response is completed. This is however not > something which is supported by the specifications and the cases I have > seen has been pure bugs and not intentional. > > Regards > Henrik > >
Received on Friday, 14 May 2010 22:17:31 UTC