На самом деле, похоже, что вывод должен быть определенного размера, прежде чем браузер отобразит его. Вероятно, буфер в конце браузера. Когда вы отправляете res.end()
, браузер сбрасывает этот буфер и визуализирует все, что находится в буфере. Однако, если res.end()
не отправлено, браузер ожидает, пока его буфер не будет заполнен.
Я попытался поэкспериментировать следующий блок кода с Firefox и curl.
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("hello\n");
for (var i = 0; i < 100; i++) {
setTimeout(function() {
res.write("world lotsa text here lotsa text\n");
}, 400*i);
}
}).listen(3000);
Вы можете попробовать это самостоятельно, перейдя к http://localhost:3000/ после запуска узла с вышеуказанным кодом.
Затем я попробовал то же самое с curl, и каждая строка показалась сразу же, как она была отправлена с сервера.
Я использовал команду curl просто:
curl http://localhost:3000/
Обратите внимание на символы новой строки, которые я вставил в файл res.write, так как curl будет ждать строк новой строки перед выводом на стандартный вывод.