2016-03-26 14 views
0

複数のリクエストからのレスポンスをHTTPサーバレスポンスにストリームすることは可能ですか? expressjsでnodejs-リクエストモジュール - http.ServerResponseへのリクエストからの複数のレスポンスのストリーミング

、アイデアは、それが到着するように、第3、その後、我々は最速である第2のAPIの応答を得るとき、それをブラウザにストリーミング(ブラウザへのストリームを返すことですlike-

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)。

しかし、上記のコードを実行すると、最初の応答のみがパイプ処理され、接続が終了します。

これはストリームパイピングでも可能ですか? socket.ioを使わずにこれを修正する提案はありますか?

答えて

0

すべてを一度にストリーミングすることはできません。そうしないと、データが重複しているか、重複している可能性があります。

また、各エンドポイントのパフォーマンスについて事前知識がある場合を除き、どのリクエストが最初に終了するかを事前に知る方法はありません。しかし、あなたは3つのエンドポイントすべてへのリクエストを消し、最も速く応答するもの(その時点で他の2つを中止する)だけをストリーミングすることができると思います。しかし、必ずしも他のストリームが終了する前にそのストリームが終了するという保証はありません。

+0

お返事ありがとうございます。私は最初のものだけでなく、3つの反応すべてが必要です。 3つのリクエストがすべて終了するのを待ってはいけません。 – msreekm

+0

私はあなたが達成しようとしていることを理解していません。あなたは3つのすべての応答をバッファリングし、それをクライアントに送り返したいと思っていますか? 3つの回答がすべて必要で、それが完了するのを待っていない場合、どのようにすべてをクライアントに配信すると思いますか? – mscdex

+0

mscdex-それはIamもまたそれを行う方法があるのだろうと思っています。 。私が達成できた1つの方法はウェブソケットを使用することでした。 Webアプリケーションのスケーリングはそれほど簡単ではありません。だから私は通常のhttp呼び出しでこれを行うことができるかどうかを調べようとしています。レスポンスありがとう。 – msreekm

関連する問題