使用请求模块流式传输Nodejs响应

时间:2018-10-16 20:27:03

标签: node.js npm stream

我正在从10台服务器下载一个文件块(块大小为600),如何更改下面的代码以流式传输响应,例如,以便它从第一台服务器的响应中读取60个字节,然后读取60个字节从第二台服务器的响应,直到我得到10。我想简化此过程。

现在我的代码从第一个服务器获取600字节并放入文件,然后再获取下一个600字节并追加,依此类推,但是我想要的是获取第一个600字节但仅读取前60个字节,然后从第二个服务器响应读取60bytes,依此类推。

  for (a=0; a< array.length; a++){   
    var remainder = a%4
    var uri = urls[remainder]+'/v1/file/download/'+'?path='+filePath
    console.log(uri)
    if ( a== partNum){
        if( a==10 && partNum ==10){
          break;
        }
    await new Promise(function (resolve, reject) {
      request.get(uri
      , function (error, response, body) {
        }
      )
      .on('data', function(data,error) {
        if (error){
          reject(error)
        } else {
        console.log('decoded chunk: ',data.length)
        }
        // decompressed data as it is received
      })
      .on('response', function(response) {
        // unmodified http.IncomingMessage object
        response.on('data', function(data) {
          // compressed data as it is received
          console.log('received ' + data.length + ' bytes of compressed data')
        })
      });
    });
    } else {
      console.log("handle error case")
    }
  }

0 个答案:

没有答案