← Обзор проекта

Документация проекта

Клиентская часть на JavaScript

Назначение

Клиент объединяет настройку источника, просмотр потока, управление аналитикой и историю обнаружений. Общий REST-контракт делает его совместимым с C++20-, Python- и Rust-серверами.

Технологический стек

  • JavaScript ES Modules без обязательного frontend-фреймворка;
  • Fetch API, async/await и AbortController;
  • Canvas и ImageBitmap;
  • HTML5 Video, hls.js и Media Source Extensions;
  • Pointer Events и ResizeObserver;
  • sessionStorage;
  • Node.js 18 как static server и ограниченный reverse proxy.

Устройство клиента

UI→ES Modules→REST / Canvas / HLS→Node proxy→Сервер

Сетевые запросы, видео и отрисовка областей не блокируют друг друга. При переключении экранов устаревшие запросы отменяются, а графические слои масштабируются вместе с видео.

Публичный доступ

VPS принимает HTTPS-запросы, отдаёт файлы клиента и маршрутизирует разрешённые запросы к REST API и HLS. Браузеру не нужен прямой доступ к серверу или камере. Защищённые операции требуют Bearer-аутентификации.

Главный экран JavaScript-клиента
Источник видео, аналитика и состояние потока