Код, интерфейсы и трафик без воды
lawebbox

Мобильная платформа S-MOB получила масштабное обновление: оффлайн-карты, поиск по лицу и новые возможности для

Платформа мобильного видеонаблюдения S-MOB (бренд IPTronic, дистрибьютор «Видеоглаз») получила апдейт, и там есть три вещи, которые наконец-то сделаны правильно.

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 19 июня 2026 г.

Мобильная платформа S-MOB получила масштабное обновление: оффлайн-карты, поиск по лицу и новые возможности для

Стейдж упал. Карты закешировались

Оффлайн-карты с фильтрацией по группам и геозонами, поиск людей по лицу в событиях и прямо на карте, поддержка FLV-камер. Плюс перетряска прав доступа, контекстные подсказки для новичков и аккуратное удаление расового атрибута из карточек объектов. Команда, видимо, прочитала пару мануалов по PWA и RBAC — и правильно сделала.

Оффлайн-карты: не магия, а нормальный кеш

Раньше карта у оператора превращалась в тыкву при потере связи — типичный фронт без Service Worker. Теперь заявлен полноценный оффлайн-режим с фильтрацией по группам и геозонами на базе последнего известного местоположения устройств. Под капотом это почти наверняка тайл-кеш плюс явная стратегия stale-while-revalidate для метаданных. Если ваш фронт на React/Vue до сих пор тянет геоданные с REST при каждом открытии вкладки — поздравляю, вы уже в хвосте. Минимальный шаблон для Mapbox/Leaflet в оффлайне выглядит примерно так:

И не забудьте ограничить размер кеша, иначе браузер сам выкинет всё при достижении лимита квоты — и снова упадёте в оффлайн-ад.

FLV против HLS: latency как религия

Поддержка создания FLV-камер — это костыль родом из 2010-х, но у него низкий latency на фоне HLS. Для пульта охраны секунда задержки критична, а HLS с его чанками по 6 секунд — тормоз для реактивного UI. Если пишете свой видеоплеер под Web — смотрите в сторону WebSocket + MediaSource Extensions или mse-embedded. FLV.js в браузере — рабочий вариант, но учтите: декодер на js выжирает CPU на средних машинах. Для прода с десятками камер одновременно — выносите в WebRTC с SFU, иначе получите fan-out из 50 вкладок с 100% загрузкой ядер.

Чек-лист: что проверить у себя

Перед тем как раскатывать аналогичные фичи, прогоните по пунктам, иначе пятничный прод вам устроит кернел-паник:

  • Service Worker зарегистрирован, caches.keys в DevTools → Application показывает ваш namespace, лимит квоты не превышен
  • RBAC: групповые политики проверяются на бэке, не только прячутся в UI — иначе любой школьник с devtools получит admin-эндпоинт
  • При сбросе связи UI не фризит: debounce на гео-запросы, оптимистичные апдейты, явные состояния pending/synced/failed
  • Стриминг: latency замеряется через performance.now между меткой кадра и фактом отрисовки — иначе «быстро» превратится в «ну, вроде норм»

Прод без бэкапа, без оффлайн-кеша и без честного RBAC — это не прод, а пятничный инцидент, который вы будете разгребать все выходные. Делайте бэкапы, товарищи, и перечитывайте чейнджлоги конкурентов — там иногда прячут готовые архитектурные решения.