t-comm
Version:
专业、稳定、纯粹的工具库
24 lines (22 loc) • 803 B
JavaScript
function getValidPort(port) {
// eslint-disable-next-line @typescript-eslint/no-require-imports
var net = require('net');
var server = net.createServer().listen(port);
return new Promise(function (resolve, reject) {
// 如果监听成功,表示端口没有被其他服务占用,端口可用,取消监听,返回端口给调用者。
server.on('listening', function () {
server.close();
resolve(port);
});
// 如果监听出错,端口+1,继续监听,直到监听成功。
server.on('error', function (err) {
if (err.code === 'EADDRINUSE') {
resolve(getValidPort(port + 1));
console.log("this port ".concat(port, " is occupied try another."));
} else {
reject(err);
}
});
});
}
export { getValidPort };