2017-08-23 11 views
0

私はnodejsで新しく、私はAngular 4アプリケーションのバックエンドで作業しています。問題は、バックエンドが応答用のデータ全体を生成するのが非常に遅いため、利用可能になるとすぐに時間をかけてデータを送信したいということです。私はRxJSについて読んでいましたが、ノードでどのように使用するのか本当に分かりません。どうすれば助けてくれますか?nodejsでチャンク内にデータを送信

+0

'res.write()'は応答を送信します。必要に応じて何度も呼び出すことができます。終了したら 'res.end()'を呼び出すことができます。 – jfriend00

+0

@ jfriend00彼が実際に必要とするのは、利用可能な状態ですぐに配信されるため、 'res.write(chunk)'は 'res.flush()'の後にチャンクを利用できるようになると直ちに配信し、終了したら'res.end()'が実行されます。 – EMX

+0

私は現在socket.ioを使用しています。とてもうまく動作しています! – lpeppe

答えて

0

たぶん、あなたはストリームへの道を探しているデータ

エクスプレス

通常は、res.send(data)で応答し、それは一度だけ呼び出すことができます。

あなたが読んで大きなファイルを送信する場合は、ストリームres.write(chunk)で、ファイルの読み込みの「終了」イベントに読み込まれている間、ファイルデータ、レスポンスを終了するres.end()を呼び出すことができます。


EDIT:あなたは、状態として、あなたが望むものは、あなたが(ちょうどフラッシュres.write(chunk)後)の書き込みの間res.flush()コマンドを使用することができますので、できるだけ早くチャンクが利用可能であるとしてストリームにあります。

あなたのケースでははるかに高速ですが、全体的な圧縮の方がはるかに効率が悪くなります。

+0

ええ、この方法では、私はまだ終了メソッドが呼び出されたときにだけデータを受け取ります(一度に) – lpeppe

+0

それはまだありますres.send(data)よりもはるかに速い – EMX

+0

私のケースでは、半分の時間が経過してから5秒後にデータが利用できる場合があります。このメソッドを使用すると、5秒後にもすべてのデータが取得されますが、これは必要ではありません – lpeppe

関連する問題