Perl的Catalyst框架允许您在打开的连接上发送逐渐增加的响应。例如,您可以在Catalyst :: Response上使用
如果我想发送一个大型CSV文件,大约200兆字节,有没有办法在不将整个CSV文件缓冲到内存中的情况下完成?当然,如果您在一定时间内没有发送数据,客户端将超时,因此如果有承诺就好了-但是有没有其他方法可以做到这一点?
当我尝试在回调中执行
我希望每一行都能发送“GOT A ROW”,直到调用
write_fh()
。我开始使用Node.js,但是我找不到如何进行相等操作的方法。如果我想发送一个大型CSV文件,大约200兆字节,有没有办法在不将整个CSV文件缓冲到内存中的情况下完成?当然,如果您在一定时间内没有发送数据,客户端将超时,因此如果有承诺就好了-但是有没有其他方法可以做到这一点?
当我尝试在回调中执行
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()
表示完成。
exports.foo
从function(res)
改为function(req, res)
。您正在传递请求而不是响应。 - hexacyanideres
,但出于必要性而这样做。 - Evan Carroll