UNPKG

answerver

Version:

incremental server port listener function

41 lines (35 loc) 783 B
var net = require('net') module.exports = listen function listen(server, _port, cb){ isPortTaken(_port, answer) function answer(err, b){ if(!b) { server.listen(_port) server.on('listening', function(){ cb(null, _port) //console.log('listening on port ' + _port) }); } else { port = _port isPortTaken(++_port, answer) } } } function isPortTaken(PORT, callback) { var tester = net.createServer() tester.once('error', function (err) { if (err.code == 'EADDRINUSE') { callback(null, true) } else { callback(err) } }) tester.once('listening', function() { tester.once('close', function() { callback(null, false) }) tester.close() }) tester.listen(PORT) }