• Solly Ross's avatar
    Use Typed Arrays for the Websock receive queue · 38781d93
    Solly Ross authored
    **This commit removes Base64 (and Flash) support**
    
    This commit converts websock.js to used Typed Arrays for the
    receive queue (and tweaks rfb.js to ensure that it continues
    to function, since only Firefox implements
    `%TypedArray%.prototype.slice`).  Base64 support was removed
    to simplify code paths, and pave the way for using Typed Arrays
    for the send queue as well.
    
    This provides two advantages: first, we allocate a buffer ahead
    of time, meaning the browser doesn't have to do any work dynamically
    increasing the receive queue size.  Secondly, we are now able to pass
    around Typed Array Views (e.g. `Uint8Array`), which are lightweight, and
    don't involve copying.
    
    The downside is that we initially allocate more memory -- we currently
    start out with 4 MiB, and then automatically double when it looks like
    the amount unused is getting to small.
    
    The commit also explicitly adds a check to the compacting logic that
    avoids calling the copy functions if `_rQlen === _rQi`.
    38781d93
README.md 4.93 KB