Spaces:
Running
Running
Download apps/web/src/lib/audio/clock-sync.ts from Benaah/MicProtocol: direct link, hf CLI and curl.
- Browser
- Download file 1.1 kB
-
https://huggingface.co/spaces/Benaah/MicProtocol/resolve/main/apps/web/src/lib/audio/clock-sync.ts
- Command line
-
hf download hf://spaces/Benaah/MicProtocol/apps/web/src/lib/audio/clock-sync.ts
-
curl -L -o clock-sync.ts https://huggingface.co/spaces/Benaah/MicProtocol/resolve/main/apps/web/src/lib/audio/clock-sync.ts
1.1 kB
| export class NtpClockSync { | |
| private offsetMs = 0; | |
| async sync() { | |
| try { | |
| const start = performance.now(); | |
| const res = await fetch('https://worldtimeapi.org/api/timezone/Etc/UTC'); | |
| const data = await res.json(); | |
| const end = performance.now(); | |
| const rtt = end - start; | |
| const serverTimeMs = new Date(data.utc_datetime).getTime(); | |
| // The server time was received at localTimeNow - (rtt/2) approximately | |
| // So trueTimeNow = serverTimeMs + (rtt/2) | |
| // offset = trueTimeNow - localTimeNow | |
| const localTimeNow = Date.now(); | |
| const trueTimeNow = serverTimeMs + (rtt / 2); | |
| this.offsetMs = trueTimeNow - localTimeNow; | |
| console.log(`[Clock Sync] Local clock drift calculated: ${this.offsetMs}ms`); | |
| } catch (err) { | |
| console.warn('[Clock Sync] Failed. Processing will rely on relative starting stamps.'); | |
| this.offsetMs = 0; | |
| } | |
| } | |
| getTrueTimeMs() { | |
| return Date.now() + this.offsetMs; | |
| } | |
| } | |