Сервис Белый – архитектура видеочата с гадалкой

Сервис «Белый» предоставляет возможность пользователям общаться с гадалкой в режиме реального времени через видеочат. Ниже подробно рассмотрена архитектура, ключевые компоненты и порядок работы системы.

Основные принципы работы

Система построена на современных веб‑технологиях, обеспечивающих низкую задержку, высокое качество изображения и звука, а также защиту конфиденциальности пользователей.

  • WebRTC – протокол для peer‑to‑peer передачи медиапотоков без необходимости установки плагинов.
  • Сигнальный сервер – отвечает за обмен метаданными (сессионными описаниями, кандидатами ICE) между клиентами и гадалкой.
  • STUN/TURN серверы – обеспечивают прохождение трафика через NAT и фаерволы, гарантируя установку соединения даже в сложных сетевых условиях.
  • Шифрование – все медиапотоки защищены DTLS‑SRTP, что исключает перехват видео и аудио.

Архитектурные компоненты

Клиентская часть (веб‑страница пользователя)

На стороне пользователя загружается лёгкая веб‑страница, содержащая:

  1. Элемент <video> для отображения собственного потока и потока гадалки.
  2. Кнопки управления: «Начать сеанс», «Остановить», «Переподключиться».
  3. Минимальный набор JavaScript‑библиотек, реализующих API getUserMedia, RTCPeerConnection и взаимодействие с сигнальным сервером через WebSocket.

Сигнальный сервер

Выполняет следующие функции:

  • Аутентификация пользователей (по токену, полученному после оплаты или ввода промокода).
  • Сопоставление запроса клиента с доступным оператором‑гадалкой (алгоритм выбора основан на загрузке оператора, специализации и времени ожидания).
  • Передача SDP‑offer/answer и кандидатов ICE между клиентом и гадалкой.
  • Логирование сессий для аналитики и контроля качества (без хранения содержимого медиапотоков).
  • Media серверы (опционально)

    В случае, когда прямое P2P‑соединение невозможно (симметричный NAT, ограничительные корпоративные политики), трафик проксируется через TURN‑сервер. Это гарантирует доставку видео и аудио, albeit с небольшим увеличением задержки.

    Порядок установления видеосвязи

    1. Инициация: пользователь нажимает кнопку «Начать сеанс». Браузер запрашивает доступ к веб‑камере и микрофону через navigator.mediaDevices.getUserMedia.
    2. Получение медиапотока: после получения разрешения создаётся локальный MediaStream, который привязывается к локальному видеоэлементу.
    3. Сигнализация: клиент открывает WebSocket‑соединение с сигнальным сервером, отправляя сообщение о желании соединиться с гадалкой.
    4. Подбор оператора: сигнальный сервер выбирает свободную гадалку, учитывая её текущую нагрузку и специализацию (например, гадание на Таро, руны, астрология).
    5. Обмен SDP и ICE: через сигнальный сервер клиент и гадалка обмениваются описаниями сессий (SDP) и кандидатами для установления прямого соединения (ICE).
    6. Установка P2P‑соединения: после успешного обмена кандидатами создаётся RTCPeerConnection, через который передаются зашифрованные видеокадры и аудиофреймы.
    7. Начало сеанса: оба участника видят и слышат друг друга в реальном времени. Гадалка проводит консультацию, а пользователь может задавать вопросы.
    8. Завершение: по нажатию кнопки «Остановить» или при разрыве соединения сигнальный сервер закрывает WebSocket‑канал, а RTCPeerConnection освобождает ресурсы.

    Обеспечение качества и надёжности

    • Адаптивный битрейт: WebRTC автоматически регулирует качество видео в зависимости от доступной пропускной способности, чтобы избежать задержек и прерываний.
    • Контроль потерь пакетов: используются механизмы FEC (Forward Error Correction) и retransmission при необходимости.
    • Мониторинг: сервер собирает метрики RTT, jitter, потери пакетов и при превышении пороговых значений предлагает пользователю переподключиться или перейти на более низкое качество.

    Конфиденциальность и безопасность

    Система «Белый» уделяет особое внимание защите личных данных:

    • Все медиапотоки шифруются DTLS‑SRTP; ключи генерируются сессионно и никогда не передаются открытым текстом.
    • Сигнальный сервер хранит только технические метаданные (временные метки, идентификаторы сессий) и не сохраняет аудио‑ или видеозаписи.
    • Доступ к веб‑камере и микрофону предоставляется только после явного разрешения пользователя в браузере.
    • Сеансы могут быть анонимными: пользователь может войти под псевдонимом, не указывая реальные персональные данные.

    Преимущества выбранной архитектуры

    1. Низкая задержка: прямое P2P‑соединение через WebRTC обеспечивает задержки обычно менее 150 мс в хороших сетях.
    2. Масштабируемость: сигнальный сервер легко горизонтально масштабируется за счёт добавления новых инстансов, а медиапотоки остаются P2P.
    3. Кроссплатформенность: работает в любых современных браузерах (Chrome, Firefox, Safari, Edge) без установки дополнительных плагинов.
    4. Экономия серверных ресурсов: поскольку основной трафик идёт напрямую между клиентами, нагрузка на серверы минимальна.

    Система видеочата у онлайн‑гадалки «Белый» представляет собой современное решение, построенное на открытых стандартах WebRTC, дополненное надёжным сигнальным сервером и механизмами обхода NAT. Такой подход позволяет обеспечить высокое качество связи, минимальную задержку и robustную защиту конфиденциальности пользователей, делая процесс онлайн‑гадания комфортным и безопасным.