Задача

Разработать на действующем веб-сайте систему аудио- и видеозвонков (технологии WebRTC или аналогичные) с полным контролем на серверной стороне. Весь стек должен работать на серверах компании, без использования внешних API или облачных решений.

Ключевые требования

  • Обеспечить прямое P2P-соединение или ретрансляцию через собственный медиасервер;
  • Звонки должны поддерживать одновременное аудио и видео, с возможностью отключения одного из потоков;
  • Интерфейс - встроенный в сайт без перехода на внешние домены;
  • Код должен быть полностью принадлежать компании (закрыт от третьих сторон);
  • Минимальная задержка и высокая отказоустойчивость;
  • Совместимость с основными браузерами (Chrome, Firefox, Safari, Edge) как на десктопе, так и на мобильных устройствах.

Без использования сторонних API

Необходимо реализовать архитектуру на базе собственного сигналинга (через WebSocket, не использующего внешний сервис). Все медиа-серверы (TURN, если необходимо при обходе NAT) должны разворачиваться на нашей инфраструктуре.

Дополнительно ожидаем

  • WebRTC + готовая схема подключения через скрытый локальный сервер;
  • Запись разговора по требованию (возможность записать диалог на наш сервер);
  • Интеграция с текущей базой пользователей (идентификация по учетной записи);
  • Минимизация потребления трафика: в фоновом режиме вызов требует низкую пропускную способность.

Сроки и Критерии

Финальный продукт - готовый код с юнит-тестами, достаточными для работы под средней нагрузкой. Документация (конфигурация серверов, описание стрим-сервера) обязательна. Код должен быть полностью переносимым на другой сервер компании без изменения архитектуры запроса.

Важно: Никакие данные пользователей не должны передаваться внешним сервисам/сторонним API.