0

HTTP リクエストを作成する Node.js アプリケーションを作成しています。受信したヘッダーに応じて、そのリクエストの結果を処理するか、リクエストを終了します。特に、ダウンロードしようとしているファイルが大きすぎる場合は、リクエストを停止したいと思います (ダウンロードも停止します。つまり、ダウンロードはバックグラウンドで行われるため、結果を無視することはできません)。これを行う方法はありますか?ノードのドキュメントで見つけることができません。コード例:

http.get(requestParams, function(res) {
  var bodyData = "";

  try {
    if(parseInt(res.headers['content-length']) > settings.maxSize) {
      done(new Error("Response is too large: " + res.headers['content-length']));
      // is there something I should do here to end the request?
      return;
    } else {
      log.debug("Content length of " + res.headers['content-length'] + " is under limit of " + settings.maxSize);
    }
  } catch(ex) {
    done(new Error("Error parsing content-length from response header:" + util.inspect(ex)));
    return;
  }

  res.setEncoding('utf8');

  res.on('data', function (chunk) {
    bodyData += chunk;
  });
  res.on('end', function() {
    done(null, bodyData);
  });
}).on('error', function(e) {
  done(e);
});
4

1 に答える 1

2

http.get() は、現在のリクエストを中止するために使用できる abort メソッドを持つリクエスト オブジェクトを返します。

例えば

var req = http.get(params, function(res){
    //content-length too large
    req.abort();
});

ドキュメントから - http://nodejs.org/api/http.html#http_request_abort

リクエストを中止します。(v0.3.8以降の新機能)

そのため、非常に古いバージョンのノードを使用していない限り、これでうまくいくはずです。

于 2012-09-04T03:57:22.063 に答える