Структура Perl Catalyst позволяет отправлять постепенно сброшенный ответ по открытому соединению. Например, вы можете использовать write_fh()
в Catalyst:: Response. Я начал использовать Node.js, и я не могу найти, как сделать эквивалент.
Если я хочу отправить большой файл CSV, порядка 200 мегабайт, это способ сделать это без буферизации всего CSV файла в памяти? Конечно, клиент будет тайм-аут, если вы не отправляете данные за определенное количество времени, так что обещание будет приятным, если... но все равно это сделать?
Когда я пытаюсь выполнить res.send(text)
в обратном вызове, я получаю
Express
500 Error: This socket has been ended by the other party
И не кажется, что Express.js поддерживает явный socket.close()
или что-то вроде ilk.
Вот пример,
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()
не будет означать завершение.