Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/backend/get-port.ts
1447 views
1
import { createServer } from "http";
2
3
export default async function getPort(): Promise<number> {
4
return 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
}
18
19
export async function getPorts(n: number): Promise<number[]> {
20
const v: any[] = [];
21
for (let i = 0; i < n; i++) {
22
v.push(getPort());
23
}
24
return Promise.all(v);
25
}
26
27