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