8

我需要连接到一个网页并返回页面的状态代码,我已经能够使用它来实现,http.request但是我需要请求的页面可能需要很长时间,有时是几分钟,所以我总是得到一个socket hang up错误。

到目前为止,我正在使用以下代码:

var reqPage = function(urlString, cb) {
    // Resolve the URL
    var path = url.parse(urlString);
    var req = http.request({
        host: path.hostname,
        path: path.pathname,
        port: 80,
        method: 'GET'
    });
    req.on('end', function() {
        cb.call(this, res);
    });
    req.on('error', function(e) {
        winston.error(e.message);
    });
};

我需要做些什么来确保我的应用程序仍然尝试连接到页面,即使它需要几分钟?

4

2 回答 2

9

使用请求模块并将超时选项设置为适当的值(以毫秒为单位)

var request = require('request')
var url = 'http://www.google.com' // input your url here

// use a timeout value of 10 seconds
var timeoutInMilliseconds = 10*1000
var opts = {
  url: url,
  timeout: timeoutInMilliseconds
}

request(opts, function (err, res, body) {
  if (err) {
    console.dir(err)
    return
  }
  var statusCode = res.statusCode
  console.log('status code: ' + statusCode)
})
于 2013-04-05T16:19:16.733 回答
0

如果您不想使用更高级别的 http 客户端(如requestsuperagent ),请添加此内容,然后添加此内容...

req.on("connection", function(socket){
    socket.setTimeout((1000*60*5)); //5 mins  
});
于 2013-04-05T16:24:27.780 回答