Files
MTranServer/desktop/ports.js
2026-01-09 16:48:36 +08:00

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'));
}
});
});
}