Files
openclaw/src/browser/test-port.ts
2026-02-18 01:34:35 +00:00

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