http.request的响应如何在两个可写流的引擎下工作?

时间:2014-11-13 23:29:59

标签: node.js streaming

基本上,我有来自http.request的回复。我必须写两个可写的流,我有一些问题:

我在做什么时

response.pipe(writable1); // Will write very fast
response.pipe(writable2); // Will write slowly
  • 我发送两个获取响应的来源(使用双倍带宽)?
  • 此代码是否存在内存问题?如果是这样,到底在哪里?
  • 有一件事我不清楚,我是否必须手动关闭响应,还是我相信nodejs会将其关闭?

1 个答案:

答案 0 :(得分:1)

回答你的问题:

  1. 不,只有一份来自response的数据副本。数据只会与response管道传输到的最慢的流一样快,如code for writing to piped streams节目所示。

  2. 不,流媒体只在内存中缓冲这么多,直到背压开始。当可写流暂时无法处理更多数据时,write()将返回false,导致response停止从套接字读取数据,直到任何可写流的内部缓冲区耗尽为止。

  3. 您不手动关闭响应。它最终将没有更多可用数据,并将在那时结束,关闭它已经传输到的任何流。