- From: Takeshi Yoshino <tyoshino@google.com>
- Date: Sat, 29 Oct 2016 03:17:40 +0900
- To: Wenbo Zhu <wenboz@google.com>
- Cc: Costin Manolache <costin@gmail.com>, Loïc Hoguin <essen@ninenines.eu>, "ietf-http-wg@w3.org Group" <ietf-http-wg@w3.org>
- Message-ID: <CAH9hSJbz_Yi8wbMZxHc=dQSpQU2ugeG-4taij_AnToawqDfAsg@mail.gmail.com>
On Sat, Oct 29, 2016 at 3:03 AM, Wenbo Zhu <wenboz@google.com> wrote: > We are not designing the best framing here .. and Takeshi knows this the > best, being through the entire history of websocket discussion. > > I think the current encoding scheme for small messages is fine, 1 byte < > 125; 3 bytes < 64K; and then 9 bytes for everything else (by this point, > saving 4 bytes at the header of the message won't matter). > > BTW, continuation is not widely used, e.g. there is not JS API for this. > Yes, that's true regarding availability via the WebSocket Web API. In Chromium, its WebSocket stack transparently fragments messages as it likes, and because of that, most servers now support it. > > On Fri, Oct 28, 2016 at 10:43 AM, Costin Manolache <costin@gmail.com> > wrote: > >> Also 24 bit fixed length ( like in http2 frame ) may be a reasonable >> choice, with a 4-byte fixed header. >> >> Costin >> >> On Fri, Oct 28, 2016 at 10:41 AM Costin Manolache <costin@gmail.com> >> wrote: >> >>> Current overhead is 2 bytes if frame is up to 125 bytes long - which I >>> think it's not very common, >>> 4 bytes for up to 64k, and 10 bytes for anything larger. >>> IMHO adding one byte - i.e. making it fixed 5-byte, with first as is, >>> and next 4 fixed length would >>> be easiest to parse. >>> >>> There are obviously too many options to encode and each has benefits - >>> my only concern was >>> that the choice of 1, 2, 8 bytes for length may not match common sizes. >>> >>> ( in webpush frames will be <4k ). >>> >>> Costin >>> >>> >>> >>> On Fri, Oct 28, 2016 at 10:21 AM Takeshi Yoshino <tyoshino@google.com> >>> wrote: >>> >>> On Sat, Oct 29, 2016 at 1:25 AM, Costin Manolache <costin@gmail.com> >>> wrote: >>> >>> I think WiSH could be great as a fallback to the webpush protocol push >>> promises, in devices >>> that don't fully support http/2, and for webpush delivery receipts. >>> >>> >>> Great to hear that. >>> >>> >>> >>> In the context of IoT: since continuation is available, any reason to >>> support 64-bit-length frames ? >>> Even 32 bit ( 4G ) frames may be unpractical. I don't know how common >>> this int encoding scheme >>> is - but using varint or fixed may be easier to handle. >>> >>> >>> It's basically not to introduce any gap with WebSocket's representation >>> power for compatibility while also keeping it efficient for small frames. >>> >>> Re: varint, >>> Actually, old WebSocket protocol I-Ds used base 128 varint for encoding >>> frame length for binary frames. >>> https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00 >>> We can choose this as this is efficient for small messages but >>> considered that WebSocket encoding is already common and honored input >>> which led to the WebSocket encoding. IIRC there was some feedback from >>> hardware developer against to 128 varint, but I cannot find it now. >>> >>> Re: big frames, >>> We're also seeing that very long messages are uncommon from Chromium's >>> UMA stats. We might be able to share that. >>> >>> Re: small over head for small frames, >>> For the use cases where WiSH is layered on top of HTTP2 overhead and TLS >>> record overhead, this difference might be negligible. >>> >>> So, ... I'm open to changing the encoding, but want to hear more :) >>> >>> >>> >
Received on Friday, 28 October 2016 18:18:34 UTC