Express.js是否支持发送无缓冲逐步刷新的响应?

Perl的Catalyst框架允许您通过打开的连接发送逐渐刷新的响应。 你可以在Catalyst :: Response上使用write_fh() 。 我已经开始使用Node.js了,我无法find相应的方法。

如果我想发送一个大的CSV文件,200 megs的顺序是有办法做到这一点,而不是缓冲整个CSV文件在内存中? 当然,如果你在一定的时间内没有发送数据,客户端将会超时,所以如果你有这样的承诺,那么这个承诺会很好吗?

当我尝试在callback中执行res.send(text)时,我得到了

 Express 500 Error: This socket has been ended by the other party 

而且,Express.js似乎并不支持显式的socket.close()或其他类似的东西。

这里是一个例子,

 exports.foo = function (res) { var query = client.query("SELECT * FROM naics.codes"); query.on('row', function(row) { //console.log(row); res.write("GOT A ROW"); }); query.on('end', function() { res.end(); client.end(); }); }; 

我希望为每行发送“GOT A ROW”,直到对client.end()的调用表示完成。

Expressbuild立在本地HTTP模块上,这意味着reshttp.ServerResponse一个实例,它从可写入stream接口inheritance。 这就是说,你可以这样做:

 app.get('/', function(req, res) { var stream = fs.createReadStream('./file.csv'); stream.pipe(res); // or use event handlers stream.on('data', function(data) { res.write(data); }); stream.on('end', function() { res.end(); }); }); 

您不能在Express中使用res.send()方法的原因是因为它会自动为您使用res.close()

    Interesting Posts