Re: [hybi] Changing meaning of 1007 status code ("frame" => "message")

Tobias Oberstein <tobias.oberstein@tavendo.de> Tue, 06 September 2011 16:31 UTC

Return-Path: <tobias.oberstein@tavendo.de>
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 B02A321F8B7E for <hybi@ietfa.amsl.com>; Tue, 6 Sep 2011 09:31:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.501
X-Spam-Level:
X-Spam-Status: No, score=-2.501 tagged_above=-999 required=5 tests=[AWL=0.099, 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 mSkXTVUznzvs for <hybi@ietfa.amsl.com>; Tue, 6 Sep 2011 09:31:49 -0700 (PDT)
Received: from EXHUB020-4.exch020.serverdata.net (exhub020-4.exch020.serverdata.net [206.225.164.31]) by ietfa.amsl.com (Postfix) with ESMTP id 0ED4821F8B7B for <hybi@ietf.org>; Tue, 6 Sep 2011 09:31:49 -0700 (PDT)
Received: from EXVMBX020-12.exch020.serverdata.net ([169.254.3.209]) by EXHUB020-4.exch020.serverdata.net ([206.225.164.31]) with mapi; Tue, 6 Sep 2011 09:33:35 -0700
From: Tobias Oberstein <tobias.oberstein@tavendo.de>
To: Philipp Serafin <phil127@gmail.com>, Hybi <hybi@ietf.org>
Date: Tue, 06 Sep 2011 09:32:32 -0700
Thread-Topic: [hybi] Changing meaning of 1007 status code ("frame" => "message")
Thread-Index: AcxssZFs49cJUPIDQ1us9Y4x1KQB0wAAAaKA
Message-ID: <634914A010D0B943A035D226786325D422C0EB8E0B@EXVMBX020-12.exch020.serverdata.net>
References: <CALiegf=D5K9H0uckc_zLVbaLieyu082g8kooAXa-3LkG+g_XGQ@mail.gmail.com> <634914A010D0B943A035D226786325D422C0EB8DB1@EXVMBX020-12.exch020.serverdata.net> <4E664964.2080601@gmail.com>
In-Reply-To: <4E664964.2080601@gmail.com>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: de-DE, en-US
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [hybi] Changing meaning of 1007 status code ("frame" => "message")
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: Tue, 06 Sep 2011 16:31:49 -0000

> > No, thats not WS. WS itself is not a message based, but framed
> > streaming protocol.
> >> - The WS transport layer receives control frames and send control
> >> frames to the other endpoint.
> >> - The WS transport layer gives received *messages* to the WS
> >> application layer (it doesn't matter giving the full buffered message or
> using straming).
> > No, I have 3 types of API: message-based, frame-based and streaming.
> I can understand the rationale for a streaming-based API (though I don't see
> why already established multimedia protocols like SIP, RTSP or RTMP
> wouldn't be a better choice here) but why would we both need message-

None of these has the (promised) attraction of being "compatible with
restricted network infrastructures".

> based *and* frame-based APIs?

A multimedia application that wants to stream over WS may want to control
fragmentation size when sending. Intermediaries MAY coalesce/fragment,
but only when not extension is in place, which semantics is not understood
by the interm.
 
> Frames may be arbitrary buffered by intermediaries, the current javascript
> API hides frames completely and, as previously discussed, you can't be sure

The JS API is just that: an API for a single environment in which WS is
implemented.

Other environment may provide frame-based/streaming APIs, and even
JS may provide such things in a 2nd revision.
 
> that a frame belonging to a text message actually contains valid UTF-8. All of
> that seem to make them a decidedly bad choice for me to base your API on.

Of course a frame-based API may be more useful for binary messages. But
even for text: what if I write received streams immediately to a temp file.
When the connection fails because of invalid UTF-8, I just delete the temp file.
When everythings fine till the message end, I rename the temp file to final file.

> What additional benefits compared to a message-based API would that give
> you?

As a library author, I want to give choice to users, since I don't know their
requirements.
I would not use a mixture of APIs in _one_ application.