是否可以将来自多个请求的响应流式传输到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的情况下解决这个问题有什么建议吗?
发布于 2016-03-27 00:12:43
不可能一次流式传输所有数据,否则可能会得到混合或重复数据的响应。
此外,除非您事先了解每个端点的性能,否则无法提前知道哪个请求将首先完成。但是,我认为您可以将请求发送到所有三个端点,并只流式传输响应最快的端点(在该点中止其他两个端点),但是这并不一定保证该流将在其他端点之前完成。
https://stackoverflow.com/questions/36237422
复制相似问题