我正在设置一个使用“net”模块与原始 TCP 进行通信的服务器。我注意到一些非常奇怪的事情:数据有一个 toArrayBuffer 方法,但它返回的东西不是 ArrayBuffer
net.createServer( function(socket) {
socket.on('data', function(data) {
var ab = data.toArrayBuffer();
// prints "function ArrayBuffer() { [native code] }"
console.log( ab.constructor );
// prints 'false'
console.log( ab.constructor == ArrayBuffer );
});
}).listen(port);
为什么会这样呢?来自套接字数据的数组缓冲区有什么特别之处吗?
最佳答案
Buffer#toArrayBuffer
为 introduced in v0.11.8事情似乎仍在不断变化;事实上,该方法是 recently removed due to memory leaks in V8 。有a thread on the v8-users mailing list详细说明问题。
同时,您可以通过方法 Jephron linked to 转换为 ArrayBuffer
.
至于你原来的问题,我不确定为什么 ab.constructor != ArrayBuffer
;我对V8的内部不是很熟悉,但是你可以看看in the original code它返回一个 v8::ArrayBuffer
。
关于javascript - Node.js net data 的 toArrayBuffer 不是真正的 ArrayBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23880694/