Re: [hybi] Random Responses

Jamie Lokier <jamie@shareable.org> Sun, 12 April 2009 21:42 UTC

Return-Path: <jamie@shareable.org>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 89E8F3A698C for <hybi@core3.amsl.com>; Sun, 12 Apr 2009 14:42:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.821
X-Spam-Level:
X-Spam-Status: No, score=-4.821 tagged_above=-999 required=5 tests=[AWL=-2.222, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cLOSDH-fNfgA for <hybi@core3.amsl.com>; Sun, 12 Apr 2009 14:42:33 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by core3.amsl.com (Postfix) with ESMTP id 9BE403A680D for <hybi@ietf.org>; Sun, 12 Apr 2009 14:42:33 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1Lt7Sp-0002Db-3x; Sun, 12 Apr 2009 22:43:43 +0100
Date: Sun, 12 Apr 2009 22:43:43 +0100
From: Jamie Lokier <jamie@shareable.org>
To: Mark Lentczner <markl@lindenlab.com>
Message-ID: <20090412214343.GM4394@shareable.org>
References: <8A829FEA-0EF2-46D6-974D-0EB237FF2728@lindenlab.com> <Pine.LNX.4.62.0904090030580.19453@hixie.dreamhostps.com> <A66ED417-B7AB-4138-B8DE-31323A4DC0C1@lindenlab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <A66ED417-B7AB-4138-B8DE-31323A4DC0C1@lindenlab.com>
User-Agent: Mutt/1.5.13 (2006-08-11)
Cc: hybi@ietf.org
Subject: Re: [hybi] Random Responses
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Apr 2009 21:42:34 -0000

Mark Lentczner wrote:
> Then I mis-replied. I should have said that we have a need for full- 
> duplex request-response -- either side can spontaneously send a  
> request message, and either side can, when ready, reply to a prior  
> request.

I agree.  HTTP requests and responses are easily distinguished, so
it's quite simple to accept either.

Recovery behaviour when the connection disappears is tricky if you
have HTTP-like requests.

Right now, clients tend to send non-idempotent requests (i.e. POST) on
a new connection, because if you send to a persistent connection, and
the socket reports an error, you don't know if the request was
received and processed and then the network died, or if the server
timed out the persistent connection and closed it while you were
sending the request.  You can't tell the difference, and it's unsafe
to repeat the request, so you use a new connection.

With a bidirectional connection, typically the initiating client sets
everything up, then the server is able to send a request - but this is
analogous to sending a request over a persistent HTTP connection.

In general with this sort of network protocol, you define a recovery
process - or assume the system will recover naturally - or don't have
non-idempotent requests coming from the server end.  But if we're
claiming to support HTTP in both directions, then we need to define if
the server is allowed to send POST requests and such to the client,
and what to do realistically on seeing network errors.

> Only the establishment in WebSocket is addressed via URL.  In rHTTP  
> each request can be addressed by URL.  This is useful as it is a very  
> common piece of meta-data that applications want. For example, using  
> WebSockets, for any complex page, an application is almost certainly  
> going to want a way to address which widget on the page is the  
> intended recipient of the event. Hence, each application is going to  
> have to devise an addressing scheme, and more importantly, a method of  
> encoding that address in the simple string event.

I agree that the URL address space is a very common useful piece of
metadata.  There is so much built around it now; it makes sense to
provide applications with that.

I also agree that HTTP message frame parsing is readily available, and
easy to implement when it isn't.

-- Jamie