gpt4 book ai didi

node.js - Node JS,延迟响应

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:22 25 4
gpt4 key购买 nike

var http = require('http');
var s = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello\n');
setInterval(function() {
res.end(' World\n');
},2000);
console.log("Hello");
});
s.listen(8080);

启动上面的服务器后,我运行,

curl http://127.0.0.1:8080 

我得到了所需的延迟。输出:

Hello <2 seconds> World

但在浏览器中,整个内容会在 2 秒后加载。

Hell World <together after 2s>

我做错了什么?

最佳答案

下面的一段代码打开了一个与客户端的响应流,并将其流式传输到客户端。因此,在 curl 中,您将首先获得“Hello”,并在 2 秒后获得“World”(因为您已将计时器设置为 2000 毫秒)。

      res.write('Hello\n');
setTimeout(function() {
res.end(' World\n');
},2000);

但浏览器只有在收到完整的响应流后才会呈现它。这就是为什么您会在 2 秒后收到响应。

完全是浏览器的行为。在收到整个响应之前,它不会使用响应流。一旦流关闭,整个响应就可以使用了。但是,在 PHP 中,有一种方法可以在需要时刷新响应流。

但是,如果您要经常查找流式数据,这不是最好的方法。我宁愿建议你使用 Comet techniquewebsockets .

希望这就是您要找的。

关于node.js - Node JS,延迟响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19928779/

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