我已经使用Node(Express)创建了一个简单的代理,在那里我从远程服务器上阅读一个pdf文件。我能够以块的形式读取文件,并以res.write()
的形式发送块作为响应。当我记录数据时,我可以看到所有的流,但我不能在前端接收块。我正确地调用了端点,但我希望获得每个读取块的响应。
客户端代码
fetch('http://localhost:8003/pdf-cors')
.then(response => response.text())
.then(data => console.log(data));
字符串
节点快速代码
app.get('/pdf-cors', (req, res) => {
https.get('https://www.mazda.com/globalassets/en/assets/csr/download/2017/2017_all.pdf')
.on('response', response => {
response.on('data', data => {
console.log("[Reading File]...");
res.write(data);
})
response.on('end', _ => {
console.log("File reading done !");
})
})
});
型
注意:当我把res.end()
放在res.write(data)
后面时,我可以在控制台中看到传递给客户端的第一个块,但随后我得到一个错误,显示Error [ERR_STREAM_WRITE_AFTER_END]: write after the end
。
我唯一想要的就是看到每个块都被传递到前端。
2条答案
按热度按时间ukdjmx9f1#
Fetch API允许使用ReadableStream流式传输数据。
在客户端,流可以读作:
字符串
fivyi3re2#
如果您只需要服务器到客户端的事件,则可以将EventStream用于服务器发送的事件。
字符串