我正在从最新的Ubuntu运行Node.js.我得到了以下代码:
var http = require('http');
var s = http.createServer(function(req, res){
res.writeHead(200, {'content-type':'text/html'});
res.write('Hello ');
setTimeout(function(){
res.end('world');
}, 3000);
});
s.listen(8000);
我通过执行“node server.js”运行,这一切都很好。但问题是,由于某种原因,在调用setTimeout之前不会输出任何内容 - 这是请求后3秒。
我或多或少地跟随http://www.youtube.com/watch?v=jo_B4LTHi3I的例子(见17:08),但我无法得到相同的,“流式”的结果,就像他得到的那样(他的浏览器首先输出“你好”)然后3秒后“世界”。)
我尝试过不同的浏览器,甚至试图在终端中“卷曲”,就像他在剪辑上一样。但它都是一样的。
默认情况下某种输出缓冲是打开的,还是为什么会这样?
提前致谢!
答案 0 :(得分:1)
这是因为浏览器只在收到res.end()3秒后才会呈现页面。在视频通知中显示的实现的情况下,该行读取
res.write('Hello \n');
使用curl,换行符会导致'hello'输出到控制台,并且在3秒之后打印'world'。
在这两种情况下,即res.write('Hello')或res.write('Hello \ n'),浏览器只在收到res.end()后呈现它。此外,如果浏览器没有收到res.end(),则响应将超时,不会显示任何内容。