Документация проекта
Клиентская часть на 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-аутентификации.
