UNPKG

@mesh-tech/mesh-cli

Version:

CLI for Mesh platform development utilities

42 lines (41 loc) 1.41 kB
import { createConnection } from "node:net"; export function probeTcpReachable(host, port, timeoutMs = 1500) { return new Promise((resolve) => { let settled = false; const socket = createConnection({ host, port }); const finish = (ok) => { if (settled) return; settled = true; socket.destroy(); resolve(ok); }; socket.setTimeout(timeoutMs); socket.once("connect", () => finish(true)); socket.once("timeout", () => finish(false)); socket.once("error", () => finish(false)); }); } export function probeConnectionHolds(host, port, timeoutMs = 800, holdMs = 25) { return new Promise((resolve) => { let settled = false; let holdTimer; const socket = createConnection({ host, port }); const finish = (ok) => { if (settled) return; settled = true; if (holdTimer) clearTimeout(holdTimer); socket.destroy(); resolve(ok); }; socket.setTimeout(timeoutMs); socket.once("connect", () => { holdTimer = setTimeout(() => finish(true), holdMs); }); socket.once("close", () => finish(false)); socket.once("timeout", () => finish(false)); socket.once("error", () => finish(false)); }); }