2016-07-01 3 views
0

Я использую модуль ws для сервера WebSocket в nodejs. На стороне сервера, у меня есть Uint8Array, что я посылаю к клиенту, используя код очень похож на этот,Данные, отправленные как ArrayBuffer, получаются как Blob

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

Однако на стороне клиента (как последний Chrome и Firefox), данные получили в качестве Blob объект. Я знаю, что смогу обработать это обратно в Uint8Array, используя FileReader API. Но я хочу получить его как ArrayBuffer. Как я могу это сделать?

ответ

1

Как только я закончил писать этот вопрос, мне удалось найти ответ самостоятельно. Согласно MDN documentation for WebSocket, существует свойство binaryType, которое должно быть установлено либо "blob", либо "arraybuffer", и оно определяет формат, в котором данные получены. Изменяя код на стороне клиента, как это так,

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

Теперь все двоичные данные от сервера получен в ArrayBuffers, как и ожидалось.

Смежные вопросы