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