UNPKG

plz-port

Version:
33 lines (29 loc) 823 B
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;