@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
42 lines (41 loc) • 1.41 kB
JavaScript
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));
});
}