我正在循环查看长网址列表,以便“取消隐藏”它们 -
我正在使用a module来执行此操作。
我的代码在
下面var async = require('async'),
unshorten = require('unshorten');
var urls = [
//all these are google
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy',
'http://t.co/twxHxOtTvy'
]
async.eachSeries(urls, function(shortUrl, callback) {
unshorten(shortUrl, function(longUrl) {
console.log(longUrl + ' is where it’s at!');
callback();
});
});
我的问题是,它达到5,然后开始计时......
如果我停止节点应用并重新启动它,它将再次达到5,然后超时。
我怀疑我正在达到某种最大连接限制,但我不知道在哪里?
为简单起见,unshorten
的来源如下:
(function() {
var urlLibrary = require('url'),
http = require('http'),
https = require('https');
function unshorten(url, callback) {
url = urlLibrary.parse(url);
('https' == url.protocol ? https : http).request(
{
'method': 'HEAD',
'host': url.host,
'path': url.pathname
},
function(response) {
if (~[301, 302].indexOf(response.statusCode)) {
(callback || console.log)(response.headers.location);
return;
}
}
).end();
}
module.exports = unshorten;
}());
答案 0 :(得分:1)
您几乎肯定会达到node.js的默认http agent max socket限制为5.请阅读hyperquest README中写的greant rant @substack以获取更多详细信息。还要考虑其他库,例如superagent(我个人最喜欢的),超查询,请求等。