nodejs-请求模块 - 将多个响应从请求流式传输到http.ServerResponse

时间:2016-03-26 15:58:24

标签: node.js express request streaming piping

是否可以将多个请求的响应流式传输到http服务器响应?

在expressjs中的

,类似于

router.get('/streamingApi',(req,res)=> {
 request('http://localhost:3000/first').pipe(res);  //take 300 ms
 request('http://localhost:3000/second').pipe(res);   //take 100 ms  
 request('http://localhost:3000/third').pipe(res);    // take 200 ms
}

想法是在流到达时将流返回到浏览器(当我们获得第二个api的响应时,这是最快的,将其流式传输到浏览器,然后是第三个api响应,并持续第一个api的响应)。

但是当我运行上面的代码时,只有第一个响应被传送,然后连接关闭。

这是否适用于流水管?有没有使用socket.io来解决这个问题的建议?

1 个答案:

答案 0 :(得分:0)

无法一次性全部流式传输,否则您可能会收到包含混合数据或重复数据的响应。

此外,除非您事先了解每个端点的性能,否则无法提前知道哪个请求将首先完成。我想你可以发出对所有三个端点的请求,并且只传输响应最快的端点(在那个时间点中止其他两个端点),但这并不一定保证该流将在其他端点完成之前完成。< / p>