Node.js не может перезаписать, пока не будет вызван res.end (chunked)

Это пример из книги: "Профессиональный 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);

Это то же самое с вами?

[Edit:] Я нахожу этот сервер Simple Node.js, который отвечает в кодировке передачи по частям,и он также не работает для меня... (все отображается после вызова end () ~5s)

1 ответ

У меня отлично работает. Так что это зависит от того, как вы это тестируете, потому что браузер, 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
Другие вопросы по тегам