Re: [hybi] GET+Upgrade as emended by Greg (was Re: handshake status)

Greg Wilkins <gregw@webtide.com> Fri, 12 November 2010 23:46 UTC

Return-Path: <gregw@webtide.com>
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 888B83A694A for <hybi@core3.amsl.com>; Fri, 12 Nov 2010 15:46:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.466
X-Spam-Level:
X-Spam-Status: No, score=-1.466 tagged_above=-999 required=5 tests=[AWL=-0.089, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_37=0.6]
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 QiPQPJTp9W1o for <hybi@core3.amsl.com>; Fri, 12 Nov 2010 15:46:09 -0800 (PST)
Received: from mail-gx0-f172.google.com (mail-gx0-f172.google.com [209.85.161.172]) by core3.amsl.com (Postfix) with ESMTP id A1E233A68E0 for <hybi@ietf.org>; Fri, 12 Nov 2010 15:46:09 -0800 (PST)
Received: by gxk27 with SMTP id 27so2481105gxk.31 for <hybi@ietf.org>; Fri, 12 Nov 2010 15:46:43 -0800 (PST)
MIME-Version: 1.0
Received: by 10.150.228.8 with SMTP id a8mr1147470ybh.271.1289605603276; Fri, 12 Nov 2010 15:46:43 -0800 (PST)
Received: by 10.236.42.204 with HTTP; Fri, 12 Nov 2010 15:46:43 -0800 (PST)
In-Reply-To: <AANLkTim3qBDZAWEeUz-CvX9wBVCduEaJ_MzR+FN7gTTx@mail.gmail.com>
References: <CA566BAEAD6B3F4E8B5C5C4F61710C110FBF779B@TK5EX14MBXW604.wingroup.windeploy.ntdev.microsoft.com> <4CD82CB6.8060702@caucho.com> <AANLkTikqK2jWsB9vqcKFEnEGTJnTXFkmMBbADfCtBOVb@mail.gmail.com> <4CD88191.9090607@caucho.com> <DBB95718-C2F3-4821-ADFA-279A21483558@apple.com> <20101109053347.GF18869@1wt.eu> <AANLkTinSr7gxBY9SJ7pKxpgc_tZjAjG0tdqrie0gr5a9@mail.gmail.com> <9137A4BF-F0D3-4F0E-A156-4079C8E78127@apple.com> <AANLkTikUCkSZxaQTWy0g2bcYfQimKZ_C2sZe0eXYXma0@mail.gmail.com> <AANLkTinBbe=4y6Y5AC0S1=NB8yp2jZhY_hxcqmrcc=4U@mail.gmail.com> <20101111064207.GD487@1wt.eu> <AANLkTim3qBDZAWEeUz-CvX9wBVCduEaJ_MzR+FN7gTTx@mail.gmail.com>
Date: Sat, 13 Nov 2010 10:46:43 +1100
Message-ID: <AANLkTikYJEmRE-TY6vy1OoD+MYhSwb7gVB9=QbDeacZB@mail.gmail.com>
From: Greg Wilkins <gregw@webtide.com>
To: Zhong Yu <zhong.j.yu@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] GET+Upgrade as emended by Greg (was Re: handshake status)
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: Fri, 12 Nov 2010 23:46:10 -0000

On 12 November 2010 06:10, Zhong Yu <zhong.j.yu@gmail.com> wrote:
> I am also under the impression that a WS connection is always a new
> connection. A previous HTTP connection will never be re-purposed by
> browser for WS. A WS connection will never be re-purposed by browser
> for HTTP.

The current spec is written that way, and I expect that current
browsers are implemented that way.

However, I see this as an unnecessary restriction on the protocol that
will harm performance and will not reduce complexity.

If a browser has a pool of existing HTTP connections to a server, then
it can make a lot of sense to use one of them to upgrade to WS.  This
will prevent another round trip and will likely avoid holding open a
HTTP connection that would otherwise be idle and eventually timeout.

The required extra complexity on the client is zero, as they are not
required to do this.  They can always use a fresh connection if that
is simpler and would only need reuse and idle connection if there were
demonstrable performance gains.

On the server side, it is actually simpler to not enforce that
upgrades are only the first request on a connection.  Currently a HTTP
server just processes requests as they arrive and if one happens to be
a successful upgrade then the server can switch to WS without the need
to check if the request was the first or not.  On a dedicated WS
server, HTTP requests prior to an upgrade will just result in normal
error handling and the connection will be closed.

Thus I believe we should drop all reference to the upgrade being the
first and only request on a HTTP connection.  It saves us no
complexity and prohibits a potential performance improvement.

cheers