gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:40 25 4
gpt4 key购买 nike

我不想使用管道发送读取流,而是通过将文件的多个部分作为 block 发送来发送它。最终目标是通过 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 秒。要测试从这些 fiddle 复制 javascript:PipeMy Method

最佳答案

Instead of sending a read stream using pipe I want to send it by sending multiple parts of the file as chunks.

为什么?这正是当您通过管道传输流时所发生的情况。

The ultimate goal is going to be doing it over websocket

为什么?如果您只需要向一个方向发送数据,则不需要 WebSocket。接收端可以使用 Fetch API 或类似的 API。 HTTP 是一个非常有能力的协议(protocol)。无论如何,您还可以通过管道连接到 WebSocket 流。

I was wondering how to use a streams data, end, close, readable events

你已经把可读记录下来了。现在您需要做的就是为 end 添加一个处理程序。像这样的事情:

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

如果您只是通过管道传输流,那么这会自动为您完成。

关于javascript - Node.js:通过服务器响应发送流数据(无管道),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com