javascript - Node.js net data 的 toArrayBuffer 不是真正的 ArrayBuffer?

标签 javascript node.js

我正在设置一个使用“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#toArrayBufferintroduced 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/

相关文章:

javascript - 第一次访问时 - 弹出一个 div 询问用户名,然后将其和日期存储在本地存储中

javascript - 显示隐藏所选选项触发第二个选择选项然后第二个选择选项触发隐藏显示div

Node.js 安装失败。日志在哪里?

node.js - 如何获取 json 对象数组而不是 Mongoose 文档

javascript - 如果我使用 "function"kw 是否可以使 TS 抛出错误?

javascript - 悬停javascript上的图像叠加

javascript - 使用 rowspan 调整表的大小

javascript - 如何解码诺克记录的响应

javascript - 在 mac 上工作但不能在机器上工作 - linux ubuntu - Node 服务器

javascript - 将其他文件中的值对象调用为对象值