init commit
This commit is contained in:
208
DEMO.md
Normal file
208
DEMO.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# 🎥 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 приложениями.
|
||||
Reference in New Issue
Block a user