Re: [hybi] [whatwg] Web sockets and existing HTTP stacks

Justin Erenkrantz <justin@erenkrantz.com> Sat, 19 December 2009 00:40 UTC

Return-Path: <justin.erenkrantz@gmail.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 E953D3A6801 for <hybi@core3.amsl.com>; Fri, 18 Dec 2009 16:40:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
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 phU8zmChV92t for <hybi@core3.amsl.com>; Fri, 18 Dec 2009 16:40:20 -0800 (PST)
Received: from mail-pz0-f176.google.com (mail-pz0-f176.google.com [209.85.222.176]) by core3.amsl.com (Postfix) with ESMTP id 21FF03A635F for <hybi@ietf.org>; Fri, 18 Dec 2009 16:40:20 -0800 (PST)
Received: by pzk6 with SMTP id 6so2582616pzk.29 for <hybi@ietf.org>; Fri, 18 Dec 2009 16:40:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type; bh=PCjkm7HAzZtHGJx0h4Zie57vAn+USi1Th33oZ+GS9EA=; b=uK9aUAKkgClMy+5BOBcFGzP2X1+JDYxBgjL8jRg9NCtoUvonsA0xfq3wFHlASEaWzx JGGloM2VjUR1YaDgeiFdNmd5j6yZM0tsqxmOKFcO1xEeJgVAfcc2+gVHoa0OazxZcb3m EhS1jiqc3acKqRv/8Xu8pjlu0T9suK+URqncE=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=VJ1sw6T3JYlIK1mcuvKMptpcLqKwgJjdwessKUNqPYzkHsaX5QDTNVAjh5xzUuY8LC HQ62P604sMn0dxuu90rwCl8tYpZG346fwn6cx9Y1CQ2AppRbQbI2Y0d4bwUwaVQnEQJM u5SqjUj5l2aE7S2kyYBvTlwh/rhblWHnhIWZE=
MIME-Version: 1.0
Sender: justin.erenkrantz@gmail.com
Received: by 10.142.118.4 with SMTP id q4mr2926035wfc.337.1261183202434; Fri, 18 Dec 2009 16:40:02 -0800 (PST)
In-Reply-To: <4B2C1D52.9020505@webtide.com>
References: <557ae280911171402v7546e5e7n93a1e57f87dc10e5@mail.gmail.com> <557ae280911200711i5493e654k67c1f5f07336bfb9@mail.gmail.com> <Pine.LNX.4.62.0912032347360.15540@hixie.dreamhostps.com> <4B2C1D52.9020505@webtide.com>
Date: Fri, 18 Dec 2009 16:40:02 -0800
X-Google-Sender-Auth: 81ef1f04ee521f60
Message-ID: <5c902b9e0912181640n497169cdrfa71f9a2908e6ef3@mail.gmail.com>
From: Justin Erenkrantz <justin@erenkrantz.com>
To: Greg Wilkins <gregw@webtide.com>
Content-Type: text/plain; charset="ISO-8859-1"
Cc: whatwg@whatwg.org, Boris Zbarsky <bzbarsky@mit.edu>, hybi@ietf.org, wfernandom2004@gmail.com
Subject: Re: [hybi] [whatwg] Web sockets and existing HTTP stacks
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: Sat, 19 Dec 2009 00:40:21 -0000

On Fri, Dec 18, 2009 at 4:24 PM, Greg Wilkins <gregw@webtide.com> wrote:
> Ian Hickson wrote:
>> On Tue, 17 Nov 2009, Christian Biesinger wrote:
>>> Is it intentional that it is impossible to implement this spec over an
>>> existing HTTP stack, as currently specified?
>>
>> Only to the same extent that it is "intentional" that it's impossible to
>> implement Telnet or SSH over an existing HTTP stack.
>
> Telnet and SSH don't use the HTTP port and don't start with a "legal"
> HTTP request.

Exactly.

> To support websocket in Jetty, we had to use our existing HTTP stack because
> we don't know that the request is a websocket upgrade until we have
> already accepted it and parsed it using our existing HTTP stack.

Ditto - this is a critical problem with the current websocket RFC.  I
would place more credence into the argument that websocket RFC has
nothing at all to do with HTTP if it didn't rely upon the HTTP/1.1
Upgrade semantics.  Either it's related, or it's not.  Let's please
not make the mistake of trying to tunnel protocols thru HTTP firewalls
just because you think it's fun.  You only do so because the semantics
are so similar and there's a lot of code reuse that can be done (which
is the appeal to me of BWTP).

On a server, it's not trivial to switch protocol mechanisms halfway
into the request flow.  Witness all the contortions Apache HTTP Server
has to do when SSL renegotiation is enabled and a request is split
across the renegotiation.  Fun!  Not.  For a client, it's a bit easier
to handle as the client *knows* it intends to upgrade.  But, a real
server won't know that.  -- justin