Re: [hybi] Framing take IV

Scott Ferguson <ferg@caucho.com> Thu, 05 August 2010 03:01 UTC

Return-Path: <ferg@caucho.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 DC62E3A69A2 for <hybi@core3.amsl.com>; Wed, 4 Aug 2010 20:01:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.571
X-Spam-Level:
X-Spam-Status: No, score=-2.571 tagged_above=-999 required=5 tests=[AWL=0.027, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001]
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 3hMGDy9x7YwS for <hybi@core3.amsl.com>; Wed, 4 Aug 2010 20:01:08 -0700 (PDT)
Received: from smtp112.biz.mail.mud.yahoo.com (smtp112.biz.mail.mud.yahoo.com [209.191.68.77]) by core3.amsl.com (Postfix) with SMTP id C0E5D3A692B for <hybi@ietf.org>; Wed, 4 Aug 2010 20:01:08 -0700 (PDT)
Received: (qmail 41079 invoked from network); 5 Aug 2010 03:01:36 -0000
Received: from scott-fergusons-macbook-pro-3.local (ferg@71.141.247.84 with plain) by smtp112.biz.mail.mud.yahoo.com with SMTP; 04 Aug 2010 20:01:35 -0700 PDT
X-Yahoo-SMTP: L1_TBRiswBB5.MuzAo8Yf89wczFo0A2C
X-YMail-OSG: vk.z318VM1lUQqGSsZJ7DUPDnCps0VI6L7DVr13geK_eahK .Pu0nn1Ve6.P04nQ5_MYUq8G46mN3R0svpvvwrCJu9wn.eoTF_RkXmRipJEL sA4XPVC9JswB0717HUSYEcHm89Fq27xoq.RuPLrKL9TyMz7VK_roW_ddByg0 mgUtGz.CwZCNoAwpkgiXdcPeoktHb99._hf5lH139uw5pEIzYTrzHYKbEmAX lOgcXtjZoQz_Cl0EKE54mH0HG6XN8j2TttRukFuvkX9.hUXPaKPMIYX74oni YyglV3TR8Wo8zJaGw1Y8l
X-Yahoo-Newman-Property: ymail-3
Message-ID: <4C5A2989.4090904@caucho.com>
Date: Wed, 04 Aug 2010 20:01:29 -0700
From: Scott Ferguson <ferg@caucho.com>
User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228)
MIME-Version: 1.0
To: Ian Hickson <ian@hixie.ch>
References: <AANLkTinyrDoG5d_Ur6HVRy=SgMPjLzJtpJ++Ye=1DQdj@mail.gmail.com> <Pine.LNX.4.64.1008040050040.5947@ps20323.dreamhostps.com> <28A6543A-5CA6-42B7-8D2E-F5511EE20008@apple.com> <4C58C2F6.8050608@caucho.com> <Pine.LNX.4.64.1008040132190.5947@ps20323.dreamhostps.com> <4C58C4C8.5020900@caucho.com> <Pine.LNX.4.64.1008040139520.5947@ps20323.dreamhostps.com>
In-Reply-To: <Pine.LNX.4.64.1008040139520.5947@ps20323.dreamhostps.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: hybi@ietf.org
Subject: Re: [hybi] Framing take IV
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: Thu, 05 Aug 2010 03:01:10 -0000

Ian Hickson wrote:
> On Tue, 3 Aug 2010, Scott Ferguson wrote:
>   
>> Ian Hickson wrote:
>>     
>>> On Tue, 3 Aug 2010, Scott Ferguson wrote:
>>>       
>>>>>   I agree. I can't see any benefit to fragmentation over a 
>>>>> variable-size length field for an initial version without 
>>>>> multiplexing. If the variable-size length field is well-designed, 
>>>>> then in the common case where the message size is small it will 
>>>>> only cost one extra branch to read the length. In the rare case 
>>>>> where the message size is large, a variable-size length is easier 
>>>>> to deal with than reassembling fragments, and easier on the 
>>>>> sending side too.
>>>>>           
>>>> Some of us don't have infinite memory when sending messages.
>>>>         
>>> Why do you need infinite memory?
>>>       
>> Because we don't know the length of dynamically produced content until 
>> the dynamic process is complete. That's why HTTP added chunking.
>>     
>
> Is this a common case we should expect? What are the use cases for this?
>   

Essentially all web sockets data is dynamic. We're not sending static files.

Data from a chat application is dynamic
JSON is dynamic
SOAP/XML is dynamic
XMPP over websockets is dynamic.
> If this is a rare occurence, then it's probably simplest to support this 
> at the application layer - nothing stops anyone from having a subprotocol 
> that defines the first byte/character of each message as being a 
> "has continuation" byte.
>   

This is incoherent.

> If this is a common occurance, then we'll be able to tell when people find 
> themselves often implementing this at the application layer, and then we 
> can easily add it at the WebSocket layer at that time (in a few months). 
> We don't need to reserve bits specifically for it today.
>   

This also makes no sense.

-- Scott