gpt4 book ai didi

node.js - 如何在 NodeJS 中刷新任意大小的 block

转载 作者:搜寻专家 更新时间:2023-11-01 00:26:07 24 4
gpt4 key购买 nike

在 Node Web 服务器中,我想在特定点刷新 HTML 内容,如下所示:

  • 第一个 block :<html><head> ... </head>
  • 第二 block :<body> ... </body>
  • 第三 block :</html>

例如:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});

res.write('<html><head> ... </head>');

setTimeout(function() {
res.write('<body> ... </body>');

setTimeout(function() {
res.end('</html>');
}, 2000);

}, 2000);

}).listen(8000);

上面的代码响应<html><head> ... </head><body> ... </body></html>在单个 block 中 ~4s 之后,但是我注意到 block 应该 >= 4096bytes 以便立即刷新:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});

res.write(Array(4097).join('*'));

setTimeout(function() {
res.write(Array(4097).join('#'));

setTimeout(function() {
res.end('done!');
}, 2000);

}, 2000);

}).listen(8000);

上面代码的响应也需要大约 4 秒,但 block 会立即刷新。我可以填充小块以填充至少 4096 字节,只是想知道是否还有另一种“非黑客”方式。

在 PHP 中,这可以通过 flush() 实现/ob_flush()并禁用 output_buffering

FWIW,我正在构建一个网络服务器工具来试验 HTML block 输出的几种配置,它们之间有给定的延迟,以便分析现代浏览器如何处理它并选择最佳配置。

谢谢

最佳答案

这是一个半重复的 this question .

答案是它已经做了你想要的,只是浏览器在收到足够的数据来解析它之前不会解析和显示任何东西。发送您的 4097 block 会插入浏览器解析文档的一部分,它不会插入 Node 以不同方式发送 block 。

如果将其置于非缓冲模式,则可以使用 curl 对其进行测试。

curl -N localhost:8000

关于node.js - 如何在 NodeJS 中刷新任意大小的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16184103/

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