簡體   English   中英

使用Node.js進行流式傳輸不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM