plz-port
Version:
33 lines (29 loc) • 823 B
JavaScript
const net = require('net');
const MAXPORT = 65536;
const MINPORT = 3000; // avoid wellknown port
const portPromise = (beginPort) => {
var PORT = parseInt(beginPort) || parseInt(Math.random() * (MAXPORT - MINPORT) + MINPORT);
return new Promise((resolve, reject) => {
const nextPort = () => {
const port = PORT++;
if (port <= 1) {
return reject(new Error('Under min port number'));
}
if (port > 65536) {
return reject(new Error('Over max port number'));
}
const server = net.createServer();
server.on('error', (err) => {
nextPort();
});
server.listen(port, () => {
server.once('close', () => {
resolve(port);
});
server.close();
});
};
nextPort();
});
};
module.exports = portPromise;