# 🎥 GodEye Signal Center - Веб-демонстрация Интерактивная веб-демонстрация системы удаленного доступа к камерам Android устройств. ## 🚀 Быстрый старт 1. **Запуск сервера:** ```bash cd backend/ node src/server.js ``` 2. **Открыть демонстрацию:** Перейти на http://localhost:3001 ## 📋 Возможности демонстрации ### 🏠 Обзор - Общая статистика системы в реальном времени - Мониторинг подключений и активных сессий - Системные логи с фильтрацией по типам ### 📱 Android Device Simulator - Симуляция Android устройства - Настройка информации об устройстве (модель, версия, доступные камеры) - Обработка входящих запросов на доступ к камере - Управление активными сессиями ### 👨‍💻 Operator Panel - Симуляция рабочего места оператора - Просмотр доступных устройств - Создание запросов на доступ к камерам - Переключение между типами камер - Управление активными сессиями ### 🛠️ Admin Panel - Административные функции системы - Детальная статистика и мониторинг - Управление устройствами и сессиями - Принудительное завершение соединений - Очистка старых данных ### 🌐 WebRTC Test - Тестирование WebRTC соединений - Демонстрация работы с локальной камерой - Проверка сигнализации между устройством и оператором ## 🔧 Как использовать ### Сценарий 1: Полный цикл подключения 1. **Подготовка устройства:** - Перейти на вкладку "Android Device" - Ввести Device ID (например: `demo-device-001`) - Настроить информацию об устройстве - Нажать "Подключить устройство" 2. **Подключение оператора:** - Перейти на вкладку "Operator" - Ввести Operator ID (например: `demo-operator-001`) - Нажать "Подключиться как оператор" 3. **Создание сессии:** - В разделе "Доступные устройства" найти ваше устройство - Выбрать тип камеры - Нажать "Запросить камеру" 4. **Обработка на устройстве:** - Вернуться на вкладку "Android Device" - В разделе "Входящие запросы" появится запрос - Нажать "Принять" или "Отклонить" 5. **Управление сессией:** - Переключение между камерами - Завершение сессии с любой стороны ### Сценарий 2: Тестирование WebRTC 1. Выполнить шаги 1-4 из Сценария 1 2. Перейти на вкладку "WebRTC Test" 3. Нажать "Запустить локальное видео" 4. Разрешить доступ к камере браузера 5. Наблюдать за установлением WebRTC соединения ## 📊 API Endpoints для тестирования ### Базовые - `GET /api/status` - общая статистика - `GET /api/devices` - список устройств ### Операторы (требуют заголовок `X-Operator-Id`) - `GET /api/operators/devices` - доступные устройства - `POST /api/operators/camera/request` - запрос камеры - `POST /api/operators/camera/{sessionId}/switch` - переключение камеры - `DELETE /api/operators/camera/{sessionId}` - завершение сессии ### Администрирование - `GET /api/admin/stats` - детальная статистика - `GET /api/admin/health` - проверка здоровья системы - `POST /api/admin/cleanup` - очистка старых данных ## 🔍 Мониторинг и отладка ### Логи - Все действия отображаются в разделе "Системные логи" - Цветовая маркировка: info (синий), warning (желтый), error (красный) - Автоматическое ограничение количества записей ### WebSocket Events Основные события, которые можно наблюдать: - `register:android` / `register:operator` - регистрация клиентов - `camera:request` / `camera:response` - запросы и ответы камеры - `camera:switch` - переключение камер - `webrtc:*` - WebRTC сигнализация ### Браузерная консоль Дополнительная отладочная информация доступна в DevTools браузера (F12) ## 🎯 Возможности демонстрации ### ✅ Реализовано - Полная симуляция Android устройства и оператора - WebSocket коммуникация в реальном времени - REST API с аутентификацией - WebRTC сигнализация (без реального видео) - Административные функции - Система мониторинга и логирования ### 🔄 В разработке - Полная WebRTC интеграция с видеопотоками - Аутентификация и авторизация - База данных для хранения сессий - Масштабирование на несколько серверов ## 🐛 Устранение неполадок ### Сервер не запускается ```bash # Проверить занятость порта netstat -tlnp | grep :3001 # Изменить порт в .env файле echo "PORT=3002" > .env ``` ### Ошибки WebSocket соединения - Убедиться что сервер запущен - Проверить консоль браузера на ошибки - Обновить страницу ### Проблемы с WebRTC - Разрешить доступ к камере в браузере - Использовать HTTPS для production (для getUserMedia) - Проверить наличие STUN/TURN серверов ## 📝 Технические детали ### Стек технологий - **Backend:** Node.js, Express, Socket.IO - **Frontend:** Vanilla JavaScript, WebRTC API - **Стили:** Custom CSS с адаптивным дизайном ### Архитектура WebSocket событий ```javascript // Регистрация register:android → register:success register:operator → register:success // Управление камерой camera:request → camera:response camera:switch → (обработка переключения) camera:disconnect → camera:disconnected // WebRTC сигнализация webrtc:offer → webrtc:answer webrtc:ice-candidate → (обработка кандидатов) ``` ### Структура REST API ``` /api/ ├── status (общедоступные) ├── devices ├── operators/ (требуют X-Operator-Id) │ ├── devices │ ├── camera/request │ ├── sessions │ └── ... └── admin/ (администраторские) ├── stats ├── health └── ... ``` ## 🤝 Разработка Для добавления новых функций в демонстрацию: 1. **Backend изменения:** Править файлы в `src/` 2. **Frontend:** Обновить `public/demo.js` и `public/index.html` 3. **API:** Добавить endpoints в `src/routes/` 4. **Перезапустить сервер** для применения изменений --- **Примечание:** Это демонстрационная версия для тестирования API и архитектуры. Для production использования требуются дополнительные меры безопасности, база данных и полная интеграция с реальными Android и Desktop приложениями.