基本node.js createServer和定时输出无法正常工作

时间:2012-05-11 16:32:49

标签: node.js

我正在从最新的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秒后“世界”。)

我尝试过不同的浏览器,甚至试图在终端中“卷曲”,就像他在剪辑上一样。但它都是一样的。

默认情况下某种输出缓冲是打开的,还是为什么会这样?

提前致谢!

1 个答案:

答案 0 :(得分:1)

这是因为浏览器只在收到res.end()3秒后才会呈现页面。在视频通知中显示的实现的情况下,该行读取

res.write('Hello \n');

使用curl,换行符会导致'hello'输出到控制台,并且在3秒之后打印'world'。

在这两种情况下,即res.write('Hello')或res.write('Hello \ n'),浏览器只在收到res.end()后呈现它。此外,如果浏览器没有收到res.end(),则响应将超时,不会显示任何内容。