node.js - 如何在 Vue.js 应用程序中显示 HTTP 流
问题描述
我有一个 nodejs 应用程序,它通过端点提供 HTTP 流,比方说 /api/logs/{id}。现在,我有一个使用 Vue.js 的前端 Web 应用程序,我想使用该流端点。我怎么做最简单?
该流是“无尽的”http 流。
奖励:如何将多个此流合并到一个视图中?
nodejs 应用程序中的代码,以将流带出。流本身来自 dockerode。
exports.read_containerlogs = function (req, res) {
var container = docker.getContainer(req.params.containerid);
container.attach({stream: true, stdout: true, stderr: true}, function (err, stream) {
res.writeHead(200, { 'Content-Type': 'text/html' })
stream.pipe(res);
});
};
解决方案
我按照这个文档在前端处理流: https ://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams
fetch('/apiURL')
.then(response=> {
const reader = reader.body.getReader()
let data = []
return reader.read().then(read = (result)=>{
if(result.done){
return data
}
data.push(result.value)
return reader.read().then(read)
})
})
.then(data => {
// Do whatever you want with your data
})
推荐阅读
- php - 如何限制通过 Laravel 中的 POST 请求提交的数组的大小?
- http - HTTP 行首阻塞:为什么响应必须按顺序返回
- c# - 如何将模型传递给视图 .NET Core Entity Framework
- vhdl - VHDL:循环读取输入数据
- sockets - Java NIO 构造——socketchannel 和 socketserverchannel 是如何在内部工作的?
- c++ - C++ SML 2.5 / 实体管理
- arduino - Ben Eater (youtuber) 使用了我在任何地方都找不到的 arduino 表达式。它是什么?
- java - BFS 迷宫不只显示最短路径
- angular - 如何解决错误:“mapboxgl:更新图层时已存在具有此 ID 的源”?
- ios - 如何正确调用 GrandCentralDispatch