2013-08-01 11 views
9

Mam WebSocket, który odbiera wiadomości binarne i chcę iterować po bajtach.Czytanie bajtów z blobu JavaScript otrzymanego przez WebSocket

wymyśliłem następującą funkcją konwersji ...

// 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); 
} 

To działa, ale wydajność jest straszna. Czy istnieje lepszy sposób na zezwolenie na czytanie bajtów?

+0

Jakiej przeglądarki używasz? – karthick

+0

Google Chrome to przeglądarka, której używam. –

+0

co to jest "dane" – Esailija

Odpowiedz

20

Czy za:

socket.binaryType = 'arraybuffer'; 

Funkcja staje:

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

który nie będzie faktycznie trzeba wykonywać żadnej pracy, bo jest to tylko pogląd na buforze.

+1

Ogromna poprawa pod względem łatwości konserwacji i wydajności. Wspaniały! –

+0

Dziękuję, działało świetnie! – velotron

Powiązane problemy