[英]Stream with Node.js doesn't work
我知道使用Node.js可以流式傳輸數據。
但是為什么這段代碼不起作用:
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("hello");
res.write("world");
}).listen(80);
似乎我必須在最后一個res.write()之后具有res.end()才能將數據發送到瀏覽器。
我認為該塊必須在發送之前一定大小。
實際上,在瀏覽器呈現輸出之前,似乎輸出必須具有一定的大小。 可能是瀏覽器端的緩沖區。 當您發送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插入的換行符將在輸出到stdout之前等待換行符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.