Skip to content

Instantly share code, notes, and snippets.

@tehnrd
Created October 11, 2012 04:06
Show Gist options
  • Save tehnrd/3870100 to your computer and use it in GitHub Desktop.
Save tehnrd/3870100 to your computer and use it in GitHub Desktop.
Node.js http timeout
var http = require('http');
var extensions = ['com', 'ac', 'ad', 'ae', 'com.af', 'com.ag', 'com.ai', 'am', 'it.ao',
'com.ar', 'as', 'at', 'com.au', 'az', 'ba', 'com.bd', 'be', 'bf', 'bg', 'com.bh', 'bi',
'bj', 'com.bn', 'com.bo', 'com.br', 'bs', 'co.bw', 'com.by', 'com.bz', 'ca', 'com.kh',
'cc', 'cd', 'cf', 'cat', 'cg', 'ch', 'ci', 'co.ck', 'cl', 'cm', 'cn', 'com.co', 'co.cr',
'com.cu', 'cv', 'cz', 'de', 'dj', 'dk', 'dm', 'com.do', 'dz', 'com.ec', 'ee', 'com.eg',
'es', 'com.et', 'fi', 'com.fj', 'fm', 'fr', 'ga', 'gd', 'ge', 'gf', 'gg', 'com.gh',
'com.gi', 'gl', 'gm', 'gp', 'gr', 'com.gt', 'gy', 'com.hk', 'hn', 'hr', 'ht', 'hu',
'co.id', 'iq', 'ie', 'co.il', 'im', 'co.in', 'io', 'is', 'it', 'je', 'com.jm', 'jo',
'co.jp', 'co.ke', 'com.kh', 'ki', 'kg', 'co.kr', 'com.kw', 'kz', 'la', 'com.lb',
'com.lc', 'li', 'lk', 'co.ls', 'lt', 'lu', 'lv', 'com.ly', 'co.ma', 'md', 'me', 'mg',
'mk', 'ml', 'mn', 'ms', 'com.mt', 'mu', 'mv', 'mw', 'com.mx', 'com.my', 'co.mz',
'com.na', 'ne', 'com.nf', 'com.ng', 'com.ni', 'nl', 'no', 'com.np', 'nr', 'nu', 'co.nz',
'com.om', 'com.pa', 'com.pe', 'com.ph', 'com.pk', 'pl', 'pn', 'com.pr', 'ps', 'pt',
'com.py', 'com.qa', 'ro', 'rs', 'ru', 'rw', 'com.sa', 'com.sb', 'sc', 'se', 'com.sg',
'sh', 'si', 'sk', 'com.sl', 'sn', 'sm', 'so', 'st', 'com.sv', 'td', 'tg', 'co.th',
'com.tj', 'tk', 'tl', 'tm', 'to', 'com.tn', 'com.tr', 'tt', 'com.tw', 'co.tz', 'com.ua',
'co.ug', 'co.uk', 'us', 'com.uy', 'co.uz', 'com.vc', 'co.ve', 'vg', 'co.vi', 'com.vn',
'vu', 'ws', 'co.za', 'co.zm', 'co.zw'];
var extCount = 0;
//Do a lot of http get requests to different google pages
for(var i = 0; i < 1000; i++){
var url = 'www.google.' + extensions[extCount];
doRequest(url);
//Increment the extension counter
extCount++;
//Reset the extension counter if necessary
if(extCount == extensions.length){
extCount = 0;
}
}
function doRequest(url){
http.get({host: url}, function(res) {
console.log(url + ' : ' + res.statusCode);
}).on('error', function(e) {
console.log(url + ' error: ' + e.message);
}).setTimeout(5000,function(){
this.abort(); //This kills all pooled/queue http get requests waiting to be processed
//How do I catch a timeout for each individual url request
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment