Node.js不能res.write直到res.end被调用(分块)

这是书中的一个例子:“Professional Node.js”。 它应该输出每秒3秒的时间戳。 但是没有在res.end()被调用之前出现:(页面加载,而3s之前,全部出现在屏幕上…)

require('http').createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); var left = 3; var interval = setInterval(function () { res.write(Date.now() + " "); left -= 1; if (left === 0) { clearInterval(interval); res.end(); } }, 1000); }).listen(4000); 

这跟你一样吗?

(编辑 :)我发现这个简单的Node.js服务器响应分块传输编码 ,它不适用于我…或(所有显示后end()调用〜5s)

       

网上收集的解决方案 "Node.js不能res.write直到res.end被调用(分块)"

为我工作得很好。 所以这取决于你如何testing这个,因为浏览器,curl和类似的东西会缓冲的东西。

 GET / HTTP/1.1 HTTP/1.1 200 OK Content-Type: text/plain Date: Fri, 27 Sep 2013 11:21:22 GMT Connection: keep-alive Transfer-Encoding: chunked e 1380280883375 e 1380280884378 e 1380280885380 0