流和响应回调任意触发

时间:2018-07-02 09:43:55

标签: node.js stream httpresponse

我是node.js初学者。我正在尝试编写一个简单的http服务器,该服务器在给定端口上提供在控制台上指定的文件。

让http = require('http'); 让fs = require('fs');

让服务器= http.createServer((请求,响应)=> {

let fileStream = fs.createReadStream(process.argv[3]);
fileStream.pipe(response);

fileStream.on('end', () => {
  console.log('Stream ended.'); // 1
  response.end(() => {
    console.log('Response ended.'); // 2
  });
}); 
});

server.listen(process.argv[2]);

当我通过浏览器发送请求时,第一个console.log('Stream ended')被两次写入控制台,而第二个console.log('Response ended.)却从未被调用,即使.txt文件中的所有内容都已发送到控制台。浏览器。

我希望两者都出现一次。

我在官方文档中找不到与此有关的任何信息,但是pipe()是否自动结束响应?为什么console.log#1会被触发两次?

提前谢谢!

0 个答案:

没有答案