繁体   English   中英

Node.js:通过服务器响应发送流数据(无管道)

[英]Node.js: Sending stream data over server response(without pipe)

我不想使用管道发送读取流,而是通过将文件的多个部分作为块发送来发送。 最终目标是通过websocket来实现,但我也想先将其付诸实践。 我想知道如何有效地使用流数据,结束,关闭,可读事件。 这是我的代码。

const fs = require('fs');
const http = require('http');
const handler = (req, res) => {
  var stream = fs.createReadStream(req.url);
  stream.on('readable', () => {res.send(stream.read());});
};
const server = http.createServer(handler);
server.listen(80);

最终的目标还是要通过websocket来实现,但是问题似乎出在我处理流的方式上。

编辑 :我完成并测试了速度差异。 我得到管道:0.3秒,我的方法:0.1秒。 要测试从这些小提琴中复制JavaScript,请执行以下操作: 管道我的方法

我不想使用管道发送读取流,而是通过将文件的多个部分作为块发送来发送。

为什么? 当您也通过管道传输流时,也正是这种情况。

最终目标是通过websocket实现

为什么? 如果只需要向一个方向发送数据,则不需要WebSocket。 接收端可以使用Fetch API或类似的接口。 HTTP是功能强大的协议。 无论如何,您也可以通过管道传输到WebSocket流。

我想知道如何使用流数据,结束,关闭,可读事件

您的readable很好。 现在,您所需要做的就是为end添加一个处理程序。 像这样:

stream.on('end', () => {
  res.end();
});

如果您只是通过管道传输流,则此操作会自动完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM