[whatwg] WebSocket bufferedAmount includes overhead or not.
Olli Pettay
Olli.Pettay at helsinki.fi
Thu Mar 4 02:26:32 PST 2010
On 3/4/10 12:17 PM, Fumitoshi Ukai (鵜飼文敏) wrote:
> On Thu, Mar 4, 2010 at 18:52, Olli Pettay <Olli.Pettay at helsinki.fi
> <mailto:Olli.Pettay at helsinki.fi>> wrote:
>
> On 3/4/10 4:42 AM, Fumitoshi Ukai (鵜飼文敏) wrote:
>
> Hi,
>
> I noticed that WebSocket spec updated to not inlcude framing
> overhead in
> bufferedAmount.
>
> I asked that since from API point of view it doesn't make
> much sense to have the frame bytes to be magically included in the
> bufferedAmount.
> What if we change the protocol and require different amount framing
> bytes?
> Also why to have framing bytes and not the bytes related to http
> handling?
>
>
> I think bufferedAmount is a number of bytes are buffered to be sent on
> wire, so including frame byte is reasonable.
>
>
> Also, XHR+progress events don't include http headers etc in the
> .loaded or .total.
>
>
>
> http://lists.whatwg.org/pipermail/commit-watchers-whatwg.org/2010/003971.html
> I tried to implement it in WebKit, but found it make hard to
> implement
> correctly.
>
> Not hard at all in gecko's implementation (the patch is still
> waiting for a review and will be possibly updated to include the latest
> changes to the protocol before pushing to hg repo).
>
>
> I just look over https://bugzilla.mozilla.org/show_bug.cgi?id=472529
> It looks just updating bufferedAmount once a whole message has been
> sent, isn't it?
There might be still a bug there, but fortunately easy to fix one.
Thanks for noticing that.
> But I think user of the API might want to know progress while partial
> transfer of large messsage,
Indeed.
> so this implementation isn't so happy, IMO.
>
> Anyway, if this level of feedback is ok, it would be better to have
> onsent event listener to fire after each message has been sent.
That would make the JS code a bit uglier and I think JS needs to know if
there are some pending messages.
-Olli
> Then, we don't need to poll bufferedAmount as do in example in WebSocket
> API draft.
> What do you think?
>
> --
> ukai
>
>
>
>
> https://bugs.webkit.org/show_bug.cgi?id=35571
> It's easy after WebSocket is closed (just add length of message),
>
> right
>
>
>
> but
> while it's open, we'll manage buffer including frame bytes
>
> In the patch for gecko there is a different buffer for each
> "message", so it is easy to count how many frame bytes are in the
> buffers.
>
>
>
> and
> underlying socket will write arbitrary length of the buffer (may
> not be
> on frame boundary)
> To get bufferdAmount correctly without framing overhead, we need to
> parse the buffer again. It's not light operation and it's
> challenge to
> make it effective.
> I think including frame overhead is much easier.
>
>
>
> Could you revert it?
>
> That would make the API worse, especially for web developers, IMO.
> They shouldn't need to know about the protocol, they should just be
> able to use the API and understand easily what bufferedAmount means.
>
>
>
> br,
>
>
> -Olli
>
>
>
>
> --
> Fumitoshi Ukai
>
>
>
More information about the whatwg
mailing list