Skip to content

Instantly share code, notes, and snippets.

@oscar-broman
Created May 26, 2013 12:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oscar-broman/5652628 to your computer and use it in GitHub Desktop.
Save oscar-broman/5652628 to your computer and use it in GitHub Desktop.
Find a free port in Node.js
/*
Much better approach than trying to connect to a range of ports.
*/
var net = require('net');
getFreePort(function(err, port) {
if (err) throw err;
console.log('Port: ' + port);
});
function getFreePort(fn) {
var server = net.createServer();
var calledFn = false;
server.on('error', function(err) {
server.close();
if (!calledFn) {
calledFn = true;
fn(err);
}
});
server.listen(0, function() {
var port = server.address().port;
server.close();
if (!calledFn) {
calledFn = true;
if (!port) {
fn(new Error('Unable to get the server\'s given port'));
} else {
fn(null, port);
}
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment