TimeSyncService
src/main/services/time-sync.service.ts
Для чого це
Перевіряє розходження між локальним годинником і серверним. Якщо час збився — повідомляє оператора. Критично для StreamTracking і всіх інтервалів де важлива точна прив’язка до реального часу.
Виклик
Не інтервал — викликається явно на кроці Login (крок 2).
Як працює
checkTimeSync():
localTime = Date.now()apiService.stack.getTime()→serverTime(timestamp з сервера)timeDifference = |serverTime - localTime| / 1000(в секундах)- Повертає
TimeSyncResult
| Різниця | status | message |
|---|---|---|
| < 20 сек | 'ok' | — |
| 20–50 сек | 'warning' | "Час не синхронізований. Різниця: N секунд" |
| > 50 сек | 'error' | "Час не синхронізований. Різниця: N секунд" |
Повертає TimeSyncResult
{
status: 'ok' | 'warning' | 'error'
timeDifference: number // секунди
serverTime: number // timestamp сервера
localTime: number // Date.now() на момент виклику
message?: string // тільки якщо warning/error
}Нюанси
- Singleton через
getInstance() - Якщо сервер недоступний →
status: 'warning',message: 'Помилка перевірки...'— не кидає виняток - Не блокує логін — результат йде в UI, але login продовжується незалежно від статусу
- Логує обидва timestamps у повному форматі (
getCurrentFullDateString) для діагностики