2016-03-26 111 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