Reading bytes from a JavaScript blob received by WebSocket

html, javascript, performance

Solution

Have you considered:

socket.binaryType = 'arraybuffer';

The function becomes:

function convert(data) {
     return new Uint8Array(data);
}

Which will not actually have to do any work because it's just a view on the buffer.

Problem

I have a WebSocket that receives binary messages and I want iterate over the bytes. I came up with the following conversion function... ``` // Convert the buffer to a byte array. function convert(data, cb) { // Initialize a new instance of the FileReader class. var fileReader = new FileReader(); // Called when the read operation is successfully completed. fileReader.onload = function () { // Invoke the callback. cb(new Uint8Array(this.result)); }; // Starts reading the contents of the specified blob. fileReader.readAsArrayBuffer(data); } ``` This does work, but the performance is terrible. Is there a better way to allow reading bytes?

Original source