Re: [hybi] Fwd: The MessageBroker WebSocket Subprotocol

Bruce Atherton <bruce@callenish.com> Sun, 02 October 2011 18:18 UTC

Return-Path: <bruce@callenish.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3CCD821F84CE for <hybi@ietfa.amsl.com>; Sun, 2 Oct 2011 11:18:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.519
X-Spam-Level:
X-Spam-Status: No, score=-2.519 tagged_above=-999 required=5 tests=[AWL=0.080, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jEHtnT5Dj7th for <hybi@ietfa.amsl.com>; Sun, 2 Oct 2011 11:18:02 -0700 (PDT)
Received: from biz82.inmotionhosting.com (biz82.inmotionhosting.com [74.124.202.87]) by ietfa.amsl.com (Postfix) with ESMTP id A6BE421F84CC for <hybi@ietf.org>; Sun, 2 Oct 2011 11:18:02 -0700 (PDT)
Received: from [24.108.144.160] (port=43984 helo=[192.168.145.100]) by biz82.inmotionhosting.com with esmtpa (Exim 4.69) (envelope-from <bruce@callenish.com>) id 1RAQen-00065N-Lm; Sun, 02 Oct 2011 11:20:58 -0700
Message-ID: <4E88AB8D.6050407@callenish.com>
Date: Sun, 02 Oct 2011 11:21:01 -0700
From: Bruce Atherton <bruce@callenish.com>
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1
MIME-Version: 1.0
To: John Tamplin <jat@google.com>
References: <92457F4F764A5C4785FCDBDDDD76477A123C1C1A@dfweml506-mbx> <4E88236E.4040405@ericsson.com> <CABLsOLADfORBHVfPax75sQeRXTmTav8aOMfey_+KuSO=oPLsEA@mail.gmail.com>
In-Reply-To: <CABLsOLADfORBHVfPax75sQeRXTmTav8aOMfey_+KuSO=oPLsEA@mail.gmail.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz82.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - callenish.com
Cc: "hybi@ietf.org" <hybi@ietf.org>, Hapner mark <hapner.mark@huawei.com>
Subject: Re: [hybi] Fwd: The MessageBroker WebSocket Subprotocol
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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, 02 Oct 2011 18:18:03 -0000

On 02/10/2011 9:51 AM, John Tamplin wrote:
>
> It isn't entirely clear to me whether this is defining a subprotocol 
> or a WebSocket extension.  3.3 clearly makes it seem to be a 
> subprotocol, but then 2.1.2 defines two opcodes, which is something 
> that can only be done by an extension.

As I pointed out in my example with HTTP (which required Request and 
Response message types), it is going to be very common for subprotocols 
to want to define new opcodes. They are the right fit for defining 
message types in a subprotocol.

I did try to suggest that subprotocols should be able to define new 
opcodes, but got push back when I tried. Eventually I realized that 
requiring there be an extension to change opcodes for use with a 
subprotocol was a better solution because then it doesn't put any 
requirements for understanding subprotocols on to intermediaries, which 
would have caused complications for some usecases for the subprotocol 
field such as versioning.

So I foresee a good number of subprotocols will also want to define 
extensions to identify opcodes that they want to use. I think this is 
fine, but in drafts that require this (such as this one)  the definition 
of the extension and the opcodes it defines should probably be in a 
separate section.

>  Also, if it is an extension, there should probably be more care to 
> reduce the number of opcodes used, as they are in very limited supply.

I don't believe that is the case. Every Websocket connection (which may 
be a socket or a channel inside a MUX connection) is going to speak only 
one subprotocol, so they are only going to need one extension defining 
new opcodes for message types.  There is no reason these opcodes cannot 
be reused between different subprotocols. That logic does not apply to 
control opcodes, of course, since they are a Websocket layer concern.