Сервис «Белый» предоставляет возможность пользователям общаться с гадалкой в режиме реального времени через видеочат. Ниже подробно рассмотрена архитектура, ключевые компоненты и порядок работы системы.
Основные принципы работы
Система построена на современных веб‑технологиях, обеспечивающих низкую задержку, высокое качество изображения и звука, а также защиту конфиденциальности пользователей.
- WebRTC – протокол для peer‑to‑peer передачи медиапотоков без необходимости установки плагинов.
- Сигнальный сервер – отвечает за обмен метаданными (сессионными описаниями, кандидатами ICE) между клиентами и гадалкой.
- STUN/TURN серверы – обеспечивают прохождение трафика через NAT и фаерволы, гарантируя установку соединения даже в сложных сетевых условиях.
- Шифрование – все медиапотоки защищены DTLS‑SRTP, что исключает перехват видео и аудио.
Архитектурные компоненты
Клиентская часть (веб‑страница пользователя)
На стороне пользователя загружается лёгкая веб‑страница, содержащая:
- Элемент
<video>для отображения собственного потока и потока гадалки. - Кнопки управления: «Начать сеанс», «Остановить», «Переподключиться».
- Минимальный набор JavaScript‑библиотек, реализующих API
getUserMedia,RTCPeerConnectionи взаимодействие с сигнальным сервером через WebSocket.
Сигнальный сервер
Выполняет следующие функции:
- Аутентификация пользователей (по токену, полученному после оплаты или ввода промокода).
- Сопоставление запроса клиента с доступным оператором‑гадалкой (алгоритм выбора основан на загрузке оператора, специализации и времени ожидания).
- Передача SDP‑offer/answer и кандидатов ICE между клиентом и гадалкой.
- Логирование сессий для аналитики и контроля качества (без хранения содержимого медиапотоков).
- Инициация: пользователь нажимает кнопку «Начать сеанс». Браузер запрашивает доступ к веб‑камере и микрофону через
navigator.mediaDevices.getUserMedia. - Получение медиапотока: после получения разрешения создаётся локальный
MediaStream, который привязывается к локальному видеоэлементу. - Сигнализация: клиент открывает WebSocket‑соединение с сигнальным сервером, отправляя сообщение о желании соединиться с гадалкой.
- Подбор оператора: сигнальный сервер выбирает свободную гадалку, учитывая её текущую нагрузку и специализацию (например, гадание на Таро, руны, астрология).
- Обмен SDP и ICE: через сигнальный сервер клиент и гадалка обмениваются описаниями сессий (SDP) и кандидатами для установления прямого соединения (ICE).
- Установка P2P‑соединения: после успешного обмена кандидатами создаётся
RTCPeerConnection, через который передаются зашифрованные видеокадры и аудиофреймы. - Начало сеанса: оба участника видят и слышат друг друга в реальном времени. Гадалка проводит консультацию, а пользователь может задавать вопросы.
- Завершение: по нажатию кнопки «Остановить» или при разрыве соединения сигнальный сервер закрывает WebSocket‑канал, а
RTCPeerConnectionосвобождает ресурсы. - Адаптивный битрейт: WebRTC автоматически регулирует качество видео в зависимости от доступной пропускной способности, чтобы избежать задержек и прерываний.
- Контроль потерь пакетов: используются механизмы FEC (Forward Error Correction) и retransmission при необходимости.
- Мониторинг: сервер собирает метрики RTT, jitter, потери пакетов и при превышении пороговых значений предлагает пользователю переподключиться или перейти на более низкое качество.
- Все медиапотоки шифруются DTLS‑SRTP; ключи генерируются сессионно и никогда не передаются открытым текстом.
- Сигнальный сервер хранит только технические метаданные (временные метки, идентификаторы сессий) и не сохраняет аудио‑ или видеозаписи.
- Доступ к веб‑камере и микрофону предоставляется только после явного разрешения пользователя в браузере.
- Сеансы могут быть анонимными: пользователь может войти под псевдонимом, не указывая реальные персональные данные.
- Низкая задержка: прямое P2P‑соединение через WebRTC обеспечивает задержки обычно менее 150 мс в хороших сетях.
- Масштабируемость: сигнальный сервер легко горизонтально масштабируется за счёт добавления новых инстансов, а медиапотоки остаются P2P.
- Кроссплатформенность: работает в любых современных браузерах (Chrome, Firefox, Safari, Edge) без установки дополнительных плагинов.
- Экономия серверных ресурсов: поскольку основной трафик идёт напрямую между клиентами, нагрузка на серверы минимальна.
Media серверы (опционально)
В случае, когда прямое P2P‑соединение невозможно (симметричный NAT, ограничительные корпоративные политики), трафик проксируется через TURN‑сервер. Это гарантирует доставку видео и аудио, albeit с небольшим увеличением задержки.
Порядок установления видеосвязи
Обеспечение качества и надёжности
Конфиденциальность и безопасность
Система «Белый» уделяет особое внимание защите личных данных:
Преимущества выбранной архитектуры
Система видеочата у онлайн‑гадалки «Белый» представляет собой современное решение, построенное на открытых стандартах WebRTC, дополненное надёжным сигнальным сервером и механизмами обхода NAT. Такой подход позволяет обеспечить высокое качество связи, минимальную задержку и robustную защиту конфиденциальности пользователей, делая процесс онлайн‑гадания комфортным и безопасным.