通过Socket.IO发送缓冲区的问题

Joe*_*oel 5 node.js socket.io

我正在尝试通过socket.io向我的浏览器发送一个Buffer.据说这是从1.0开始支持的.

服务器代码:

var tempBuffer = new Buffer(10);
for (var i=0; i<10; i++) {
    tempBuffer[i] = i;
}
io.sockets.emit('updateDepth', { image: true, buffer: tempBuffer });
Run Code Online (Sandbox Code Playgroud)

客户代码:

socket.on('updateDepth', function(data) {
    console.log("update depth: " + data.buffer + ", " + data.buffer.length);
});
Run Code Online (Sandbox Code Playgroud)

除了data.buffer是一个ArrayBuffer(不是Buffer)并且长度未定义(ArrayBuffer似乎不包含任何东西)之外,客户端上的一切看起来都很好.

我错过了一些明显的东西,或者这不是它应该如何工作?非常感谢!

msc*_*dex 1

Buffer是一个节点,浏览器没有本机支持,但它们确实支持类型化数组(比缓冲区垫片更好)。因此在浏览器端使用更好的容器是有意义的。

  • 来自 socket.io 网站:[“Socket.IO 现在支持发出 `Buffer`(来自 Node.JS)、`Blob`、`ArrayBuffer` 甚至 `File`,作为任何数据结构的一部分”](http:// socket.io/blog/introducing-socket-io-1-0/#binary-support)。 (4认同)