Files
god_eye/docs/DEMO.md
2025-09-29 22:06:11 +09:00

8.7 KiB
Raw Blame History

🎥 GodEye Signal Center - Веб-демонстрация

Интерактивная веб-демонстрация системы удаленного доступа к камерам Android устройств.

🚀 Быстрый старт

  1. Запуск сервера:
cd backend/
node src/server.js
  1. Открыть демонстрацию: Перейти на 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 интеграция с видеопотоками
  • Аутентификация и авторизация
  • База данных для хранения сессий
  • Масштабирование на несколько серверов

🐛 Устранение неполадок

Сервер не запускается

# Проверить занятость порта
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 событий

// Регистрация
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 приложениями.