已实现:HTTP/TCP/Banner 探测、90 天可用率、表格/卡片视图、 数据源过滤、UptimeRobot 双向兼容、服务端驱动的刷新节奏、 刷新接口滥用防护与信息泄露控制。
19 lines
726 B
JavaScript
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', '端口可连接'));
|
|
});
|
|
}
|