Files
vision-start/components/utils/jsping.ts
T
ivanch 99dbea0615
Build and Release to Staging / Build Vision Start (push) Successful in 40s
Build and Release to Staging / Build Vision Start Image (push) Successful in 1m8s
Build and Release to Staging / Deploy Vision Start (staging) (push) Successful in 16s
fixing small issues in the project
2026-10-10 23:25:20 -03:00

29 lines
858 B
TypeScript

import { parseServerAddress } from './urlUtils';
async function ping(url: string, multiplier = 1, signal?: AbortSignal): Promise<number> {
const target = parseServerAddress(url);
const controller = new AbortController();
const abort = () => controller.abort();
if (signal?.aborted) abort();
signal?.addEventListener('abort', abort, { once: true });
const timeout = setTimeout(abort, 5000);
const start = performance.now();
try {
await fetch(target.href, {
method: 'HEAD',
mode: 'no-cors',
cache: 'no-store',
credentials: 'omit',
signal: controller.signal,
});
return (performance.now() - start) * multiplier;
} finally {
clearTimeout(timeout);
signal?.removeEventListener('abort', abort);
}
}
export default ping;