Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/backend/get-port.ts
1709 views
1
import { createServer } from "http";
2
3
export default async function getPort(): Promise<number> {
4
const port = await new Promise((resolve, reject) => {
5
const server = createServer();
6
server.listen(0, () => {
7
const address = server.address();
8
if (typeof address === "object" && address !== null) {
9
const port = address.port;
10
server.close(() => resolve(port));
11
} else {
12
reject(new Error("Failed to get port"));
13
}
14
});
15
server.on("error", reject);
16
});
17
return port as number;
18
}
19
20
export async function getPorts(n: number): Promise<number[]> {
21
const v: any[] = [];
22
for (let i = 0; i < n; i++) {
23
v.push(getPort());
24
}
25
return Promise.all(v);
26
}
27
28