Задача
Разработать на действующем веб-сайте систему аудио- и видеозвонков (технологии WebRTC или аналогичные) с полным контролем на серверной стороне. Весь стек должен работать на серверах компании, без использования внешних API или облачных решений.
Ключевые требования
- Обеспечить прямое P2P-соединение или ретрансляцию через собственный медиасервер;
- Звонки должны поддерживать одновременное аудио и видео, с возможностью отключения одного из потоков;
- Интерфейс - встроенный в сайт без перехода на внешние домены;
- Код должен быть полностью принадлежать компании (закрыт от третьих сторон);
- Минимальная задержка и высокая отказоустойчивость;
- Совместимость с основными браузерами (Chrome, Firefox, Safari, Edge) как на десктопе, так и на мобильных устройствах.
Без использования сторонних API
Необходимо реализовать архитектуру на базе собственного сигналинга (через WebSocket, не использующего внешний сервис). Все медиа-серверы (TURN, если необходимо при обходе NAT) должны разворачиваться на нашей инфраструктуре.
Дополнительно ожидаем
- WebRTC + готовая схема подключения через скрытый локальный сервер;
- Запись разговора по требованию (возможность записать диалог на наш сервер);
- Интеграция с текущей базой пользователей (идентификация по учетной записи);
- Минимизация потребления трафика: в фоновом режиме вызов требует низкую пропускную способность.
Сроки и Критерии
Финальный продукт - готовый код с юнит-тестами, достаточными для работы под средней нагрузкой. Документация (конфигурация серверов, описание стрим-сервера) обязательна. Код должен быть полностью переносимым на другой сервер компании без изменения архитектуры запроса.
Важно: Никакие данные пользователей не должны передаваться внешним сервисам/сторонним API.