UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

28 lines (24 loc) 894 B
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); 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); } }); }); } exports.getValidPort = getValidPort;