Files
shiroko-monitor/prober/node/lib/tcp-probe.js
T
tamakyi 3db3ce570a chore: v0.6.0 baseline — 主题美化前存档
已实现:HTTP/TCP/Banner 探测、90 天可用率、表格/卡片视图、
数据源过滤、UptimeRobot 双向兼容、服务端驱动的刷新节奏、
刷新接口滥用防护与信息泄露控制。
2026-10-13 18:31:58 +08:00

19 lines
726 B
JavaScript

import net from 'node:net';
export function probeTcp(monitor) {
const started = Date.now();
const timeoutMs = (monitor.timeout ?? 10) * 1000;
return new Promise((resolve) => {
const socket = net.createConnection({ host: monitor.host, port: monitor.port });
const finish = (status, detail) => {
socket.destroy();
resolve({ status, latency: Date.now() - started, code: null, detail });
};
socket.setTimeout(timeoutMs, () => finish('down', 'TCP 连接超时'));
socket.once('error', (err) =>
finish('down', err.code === 'ECONNREFUSED' ? '连接被拒绝(端口关闭)' : (err.code || err.message))
);
socket.once('connect', () => finish('up', '端口可连接'));
});
}