作为ArrayBuffer发送的数据将作为Blob接收

Data sent as ArrayBuffer is being recieved as Blob

本文关键字:Blob 接收 数据 ArrayBuffer 作为      更新时间:2023-09-26

我正在nodejs中为WebSocket服务器使用ws模块。在服务器端,我有一个Uint8Array,我用类似的代码发送给客户端

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

但是,在客户端(最新的Chrome和Firefox(,数据作为Blob对象接收。我知道我可以使用FileReader API将其处理回Uint8Array。但我首先想把它作为ArrayBuffer接收。我该怎么做?

就在我写完这个问题的时候,我碰巧自己找到了答案。根据WebSocket的MDN文档,有一个binaryType属性必须设置为"blob""arraybuffer",并且它确定接收数据的格式。通过这样更改客户端代码,

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

现在,正如预期的那样,来自服务器的所有二进制数据都作为ArrayBuffer接收。