gpt4 book ai didi

javascript - node.js - 我无法重现来自服务器的渐进式响应

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:10 25 4
gpt4 key购买 nike

嗯,

我是 node.js 的新手。开始尝试,我正在关注 Ryan Dahl ( http://www.youtube.com/watch?v=jo_B4LTHi3I ) 的介绍此时(大约 0:17:00)有关于服务器如何处理响应的解释,

基本示例是从网络服务器输出“hello”,然后在 2 秒后输出“world”,这段代码应该做到这一点

//Require the webserver library 
var http = require('http');

var server = http.createServer(function(req, res) {
res.writeHead(200, { 'content-type' : 'text-plain' });
res.write('Hello\n');

//Asynchronous behavior
setTimeout(function() {
res.end('World\n');
}, 2000);
});

server.listen(3000);

所以我运行它,我得到了 Hello World,但是只有一个来自服务器的完整结果的响应,即请求 > 2 秒 > 'Hello World'。而不是请求 > 你好 > 2 秒 > 世界。

这是为什么?我该如何改变这种行为?

我正在使用 v0.8.18,curl -i http://localhost:3000 返回正确的 header ...HTTP/1.1 200 OK
内容类型:纯文本
日期:2013 年 1 月 26 日星期六 18:10:05 GMT
连接:保持事件状态
传输编码:分块

最佳答案

在开始呈现之前,浏览器会缓冲传入的数据,直到收到一定数量的数据。您的 Node 代码正如您所期望的那样,它将发送响应的第一部分,然后等待 2 秒,然后发送第二部分。

如果你想观察这个行为,你可以发送一堆空格让浏览器清空它的缓冲区。如果您在初始写入后添加它,您将看到浏览器呈现请求的前半部分。

var str = '';
for (var i = 0; i < 2000; i++){
str += ' ';
}
res.write(str);

显然不要在实际代码中执行此操作,但演示该行为很好。

关于javascript - node.js - 我无法重现来自服务器的渐进式响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540335/

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