mirror of
https://github.com/xxnuo/MTranServer.git
synced 2026-09-03 06:35:20 +08:00
33 lines
822 B
JavaScript
33 lines
822 B
JavaScript
import net from 'net';
|
|
|
|
export async function isPortAvailable(port, host) {
|
|
return new Promise((resolve) => {
|
|
const server = net.createServer();
|
|
server.unref();
|
|
server.once('error', () => {
|
|
resolve(false);
|
|
});
|
|
server.once('listening', () => {
|
|
server.close(() => resolve(true));
|
|
});
|
|
server.listen(port, host);
|
|
});
|
|
}
|
|
|
|
export async function getFreePort() {
|
|
return new Promise((resolve, reject) => {
|
|
const server = net.createServer();
|
|
server.unref();
|
|
server.once('error', reject);
|
|
server.listen(0, () => {
|
|
const address = server.address();
|
|
if (address && typeof address !== 'string') {
|
|
const port = address.port;
|
|
server.close(() => resolve(port));
|
|
} else {
|
|
reject(new Error('Failed to get port'));
|
|
}
|
|
});
|
|
});
|
|
}
|