system auth

TimeSyncService

TimeSyncService

src/main/services/time-sync.service.ts


Для чого це

Перевіряє розходження між локальним годинником і серверним. Якщо час збився — повідомляє оператора. Критично для StreamTracking і всіх інтервалів де важлива точна прив’язка до реального часу.


Виклик

Не інтервал — викликається явно на кроці Login (крок 2).


Як працює

checkTimeSync():

  1. localTime = Date.now()
  2. apiService.stack.getTime()serverTime (timestamp з сервера)
  3. timeDifference = |serverTime - localTime| / 1000 (в секундах)
  4. Повертає TimeSyncResult
Різницяstatusmessage
< 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) для діагностики