【发布时间】:2014-10-24 01:34:19
【问题描述】:
我正在尝试通过 socket.io 向我的浏览器发送一个缓冲区。据说这是从 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 });
客户端代码:
socket.on('updateDepth', function(data) {
console.log("update depth: " + data.buffer + ", " + data.buffer.length);
});
除了 data.buffer 是一个 ArrayBuffer(不是 Buffer)并且长度未定义(ArrayBuffer 似乎不包含任何内容)之外,一切在客户端看起来都不错。
我是否遗漏了一些明显的东西,或者这不是它应该如何工作的?非常感谢!
【问题讨论】:
-
实际问题是
socket.io是否真的具备处理二进制数据的发送和接收的能力?我看到的例子一直是字符串或者JSON(其他东西变成字符串),但是我不知道socket.io在这方面的能力是什么。 -
您不能通过套接字 io 发送二进制缓冲区。看看BinaryJS
-
您可以对缓冲区进行base64编码并发送该字符串。