gpt4 book ai didi

node.js - 来自 socket.on ('data' ) 的数据缓冲区可以安全保留吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:44 25 4
gpt4 key购买 nike

如果我这样做:

const net = require('net');
const allData = [];
const server = net.createServer((socket) => {
socket.on('data', (data) => {
allData.push(data); // store data; not a copy of it
});
});
server.listen(8080, '127.0.0.1');

setInterval(() => {
console.log(allData);
}, 5000);

我能保证allData中存储的数据一致吗?或者 net 是否可以为以后的数据重用缓冲区?

使用上面的代码进行测试并发送简单的 cURL 请求意味着它不会被覆盖,但我在 documentation 中找不到任何内容。支持这一点,以及 code有点像迷宫。

我可以依赖这种行为,还是必须复制缓冲区才能安全?

最佳答案

正如 Patrick Roberts 在评论中指出的那样,执行类似操作的 Node.js 示例是表明这样做安全的最佳迹象。经过一番搜寻后,我发现了这个示例(针对 http 而不是 net,但它们紧密相连);

let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// at this point, `body` has the entire request body stored in it as a string
});

来源:https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/#request-body

这意味着 http 数据至少在连接期间是一致的,并且假设这意味着它无限期地保持一致并不过分。

关于node.js - 来自 socket.on ('data' ) 的数据缓冲区可以安全保留吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53340149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com