2016-03-26 112 views
0

是否可以将多个请求中的响应传输到http服务器响应?nodejs-请求模块 - 将请求中的多个响应流式传输到http.ServerResponse

在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?

回答

0

无法一次全部流式传输它们,否则您可能会收到混合或重复数据的响应。另外,除非您事先了解每个端点的性能,否则无法提前知道哪些请求将首先完成。但是,我想你可以向所有三个端点发出请求,并且只流式传输响应最快的一个(在当时中止另外两个端点),但这不一定能保证该流将在其他人可用之前完成。

+0

感谢您的回复。我需要所有3个响应,而不仅仅是第一个响应。但不想等待所有3个请求完成。 – msreekm

+0

我不明白你想要完成什么。你想要缓冲所有3个响应,然后*发送回客户端?如果您需要全部3个响应,并且您不想等待它们完成,那么您希望如何将它们全部交付给客户? – mscdex

+0

mscdex-这是Iam也想知道是否有办法做到这一点。 。我能够实现的一种方式是使用websockets。但扩展websockets应用程序并不那么简单。所以iam试图看看我们是否可以用普通的http调用来做到这一点。感谢您的回应。 – msreekm