mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-19 22:10:51 +00:00
19 lines
528 B
TypeScript
19 lines
528 B
TypeScript
import { createServer } from "node:http";
|
|
import type { AddressInfo } from "node:net";
|
|
|
|
export async function getFreePort(): Promise<number> {
|
|
while (true) {
|
|
const port = await new Promise<number>((resolve, reject) => {
|
|
const s = createServer();
|
|
s.once("error", reject);
|
|
s.listen(0, "127.0.0.1", () => {
|
|
const assigned = (s.address() as AddressInfo).port;
|
|
s.close((err) => (err ? reject(err) : resolve(assigned)));
|
|
});
|
|
});
|
|
if (port < 65535) {
|
|
return port;
|
|
}
|
|
}
|
|
}
|