Re: [hybi] Straw poll: Do you miss interjectable WebSocket level control frame? (was: Re: Discontinuation of mux ...)

Ian Hickson <ian@hixie.ch> Fri, 28 February 2014 21:00 UTC

Return-Path: <ian@hixie.ch>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D39401A01C8 for <hybi@ietfa.amsl.com>; Fri, 28 Feb 2014 13:00:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wLsI6kjnAy-2 for <hybi@ietfa.amsl.com>; Fri, 28 Feb 2014 13:00:41 -0800 (PST)
Received: from homiemail-a46.g.dreamhost.com (caibbdcaacfb.dreamhost.com [208.113.200.251]) by ietfa.amsl.com (Postfix) with ESMTP id E184A1A0164 for <hybi@ietf.org>; Fri, 28 Feb 2014 13:00:41 -0800 (PST)
Received: from homiemail-a46.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a46.g.dreamhost.com (Postfix) with ESMTP id 0B3743E406C; Fri, 28 Feb 2014 13:00:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=hixie.ch; h=date:from:to :cc:subject:in-reply-to:message-id:references:mime-version: content-type; s=hixie.ch; bh=p2+uzqtdjujUpB0VVhwSAipy+9c=; b=XpN WP/RljFjtt6hWpWzvO39Rm0O/YhTHTFY4KHGSRAlz+C/7I5Hc3Z0W33R7kDQUdu7 5wD+xTL9xtNgCN87NA2A68oz374EYV6R68L4X6kByLGTSG4rprJZK5xcNo0fBOk2 VZoAPer0MW6Z86yiIbeMez4NcJ//DfWz8SspArr4=
Received: from ps20323.dreamhostps.com (ps20323.dreamhost.com [208.113.236.128]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: internal@index.hixie.ch) by homiemail-a46.g.dreamhost.com (Postfix) with ESMTPSA id F178B3E4057; Fri, 28 Feb 2014 13:00:39 -0800 (PST)
Date: Fri, 28 Feb 2014 21:00:39 +0000
From: Ian Hickson <ian@hixie.ch>
To: Zhong Yu <zhong.j.yu@gmail.com>
In-Reply-To: <CACuKZqGQ6s9qFDuLL_95J+RpDSZ2cZWcESM_z=WgoUjbLHwrNw@mail.gmail.com>
Message-ID: <alpine.DEB.2.00.1402282056570.31525@ps20323.dreamhostps.com>
References: <CAH9hSJbjQNKnZTJmBFtU8MgmnRTYjPopC4oP_78bWUGap-9CvA@mail.gmail.com> <CAH9hSJbBmvNPBSSAk-khdWXgWw0GTt0FG3KsdzYeJcfiAPDk0A@mail.gmail.com> <CAHixhFq=wfmYH8-ij_WtsQLN=NUTJwRQ=k8jCPepQDM8V8ZZYA@mail.gmail.com> <CABihn6EN7V6XEwf6NWn78orxvr3XjGHxROJC4JjQ6RYYKEeCug@mail.gmail.com> <CACuKZqHNoR5GQmWyzbXAszZCOT2P4pjSmT3SF6ZG3X7hTY=1xw@mail.gmail.com> <CABihn6GC4VM2AHza-F7ML=FfHLZu7FNqx+BhbuVsfJLWk0P92w@mail.gmail.com> <CAH9hSJbSfQ2Abp6oLifi0dx4TZENzm2QRn8zMQfAv=vw+H12sw@mail.gmail.com> <alpine.DEB.2.00.1402261734120.31525@ps20323.dreamhostps.com> <CACuKZqGQ6s9qFDuLL_95J+RpDSZ2cZWcESM_z=WgoUjbLHwrNw@mail.gmail.com>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
Content-Language: en-GB-hixie
Content-Style-Type: text/css
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Archived-At: http://mailarchive.ietf.org/arch/msg/hybi/fCRXOFII6ZirEdBWfF6yTo4ZsXU
Cc: "hybi@ietf.org" <hybi@ietf.org>, Peter Thorson <webmaster@zaphoyd.com>
Subject: Re: [hybi] Straw poll: Do you miss interjectable WebSocket level control frame? (was: Re: Discontinuation of mux ...)
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.15
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: Fri, 28 Feb 2014 21:00:44 -0000

On Fri, 28 Feb 2014, Zhong Yu wrote:
> 
> I think this is a good choice for most use cases. But eventually someone 
> will need the feature of abort/cancel an outgoing message that takes too 
> long to transmit.

Once someone has a use case for this, we can study it and consider the 
right solution.


> If write() is a blocking method, it makes sense that close() after 
> write() should flush the data at best effort. But here write() is a 
> non-blocking, async method, it's not intuitively clear what should 
> happen if close() is called when a write action is still ongoing.

In the Web Socket API, WebSocket.send() and WebSocket.close() are both 
specced as atomic. The fact that buffering has to happen is an 
implementation detail (albeit one exposed in the bufferedAmount 
attribute). The protocol spec could provide more detailed hooks to control 
this, of course. But I don't think the specs are unclear.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'