2016-07-01 11 views
0

Ich verwende das ws-Modul für einen WebSocket-Server in nodejs. Auf der Serverseite habe ich eine Uint8Array, die ich so sehr an den Client unter Verwendung von Code senden,Daten, die als ArrayBuffer gesendet werden, werden als Blob empfangen

var data = new Uint8Array([1, 2, 3, 4, 5]); 
clientSock.send(data, { 
    binary: true 
}); 

jedoch auf der Client-Seite (sowohl die neueste Chrome und Firefox), werden die Daten als ein empfangen Blob Objekt. Ich weiß, dass ich dies zurück in Uint8Array mit der FileReader API verarbeiten kann. Aber ich möchte es als ArrayBuffer in erster Linie erhalten. Wie kann ich das machen?

Antwort

1

Gerade als ich mit dem Schreiben dieser Frage fertig war, fand ich zufällig die Antwort selbst. Nach der MDN documentation for WebSocket gibt es eine binaryType Eigenschaft, die auf "blob" oder "arraybuffer" festgelegt werden muss, und es bestimmt das Format, in dem die Daten empfangen werden. Durch die Änderung so den clientseitigen Code wie,

var sock = new WebSocket("<the server address>"); 
sock.binaryType = "arraybuffer"; 

Nun sind alle binären Daten von dem Server als ArrayBuffers empfangen wird, wie erwartet.