Тестирования WebRTC · TURN сервер · SFU сервер · Сигнальный сервер

Тестируй WebRTC приложения на лету

Единый визуальный интерфейс для глубокого тестирования, инспекции медиапотоков и нагрузочной проверки WebRTC, TURN, SFU и сигнальных серверов прямо из браузера без написания клиентского кода.

$ curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-inspector/main/install.sh | sudo bash
Документация Slyber Inspector на GitHub
Slyber Inspector :8095 Spawn: 50 pairs Media pool (IndexedDB) 4 streams 220-520 Hz Signaling & probe ws /ws (sdp + ice) post /api/check Redis & secret auth md5 & sha1 keys [Revoke redis key] Peer 1 · RTCPeerConnection tx: video A · rx: video B 30 fps relay 99.99.99.99:49213 2557 kbps · 117 mb · 22 ms Peer 2 · RTCPeerConnection tx: video B · rx: video A 30 fps relay 99.99.99.99:49212 1560 kbps · 68 mb · 24 ms Direct p2p blocked
Запуск интерфейса за 30 секунд
Единый статический Go бинарник со встроенным веб интерфейсом и сигнальным сервером установка в systemd или запуск в Docker одной командой.
Тест режимов Secret и Redis
Автоматическая генерация временных токенов HMAC-SHA1 и прямая запись RFC 5389 MD5-ключей в Redis с кнопкой мгновенного отзыва доступа.
Живой генератор пар WebRTC
Запуск до 50 одновременных пар пиров в режиме force relay с передачей реальных видеофайлов или синтетических Canvas потоков.
Телеметрия и ICE Restart
Контроль выделенных релейных портов, битрейта и RTT каждую секунду, а также проверка бесшовного переключения сессий кнопкой Ice restart.
Инструментарий инженера

Все для визуальной верификации и нагрузочного тестирования WebRTC в одном приложении

От проверки STUN и записи хешей в Redis до генерации десятков живых видеозвонков - все инструменты диагностики собраны в одном бинарнике на Go.

01 / 03
Multi Pair Load Spawner

Генератор парных WebRTC сессий и стресс тестирование

Одновременный запуск от 1 до 50 пар двусторонних WebRTC соединений с принудительной маршрутизацией через TURN.

Автоматический выбор разных видео для Peer 1 и Peer 2
Dual Auth & Redis Control

Инспекция авторизации HMAC и управление ключами в Redis

Полная поддержка режимов secret (HMAC-SHA1) и redis (RFC 5389 MD5) с удалением ключей на лету.

Автозапись ключей turn/realm//user//key
Persistent Media Pool

Постоянный медиапул и синтетические потоки

Загрузка пользовательских видеофайлов с сохранением в памяти браузера (IndexedDB) и встроенный синтезатор демо потоков.

Индивидуальное управление звуком через Web Audio API
ICE Restart & Probing

Тестирование ICE Restart на лету и STUN диагностика

Мгновенная проверка доступности узла (Verify server connection) и тест бесшовной смены портов Ice restart.

Контроль выделенных релейных адресов relay IP:Port
Real-Time WebRTC Stats

Живая телеметрия потоков, битрейта и задержки RTT

Посекундный сбор метрик inbound-rtp и candidate-pair для каждого пира и сводный дашборд всей нагрузки.

Наглядная индикация статуса согласования ICE и Signaling
Single Binary & Docker Ready

Единый статический бинарник и мгновенный запуск в Docker

Автономный Go сервер со встроенной веб статикой, сигнальным узлом и автосохранением состояния рабочего стола.

Сохранение активной вкладки и всех полей формы в localStorage
Тестирование за 4 шага

Как протестировать инфраструктуру через Slyber Inspector

От установки инспектора до запуска десятков одновременных релейных видеосессий с проверкой Redis и ICE Restart - менее чем за 1 минуту.

01 / 02
ШАГ 01 · Установка

Разверните Slyber Inspector одной командой

Скрипт определит ОС и архитектуру процессора (amd64/arm64), сверит контрольную сумму SHA256SUMS, установит бинарник в /usr/local/bin/slyber_test и на Linux автоматически запустит systemd службу на порту 8095.

ШАГ 01
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-inspector/main/install.sh | sudo bash
ШАГ 02 · Конфигурация узла

Подключите ваш TURN сервер и проверьте отклик

Откройте веб интерфейс на порту 8095, укажите адрес вашего TURN сервера, выберите режим авторизации (secret или redis) и нажмите «Verify server connection» для мгновенного замера STUN RTT и проверки хранилища ключей.

ШАГ 02
Turn server address: 99.999.999.99:3478
Realm domain:        turn.local
Ice transport:       relay only (force turn)
Auth mode:           redis (99.999.999.99:6379) или secret (HMAC)
ШАГ 03 · Медиапул

Загрузите видео файлы в один клик

Загрузите минимум два локальных видеофайла (они сохранятся в браузере) или нажмите кнопку «Add 4 demo streams» для мгновенного создания синтетических аудио и видеопотоков.

ШАГ 03
// Доступно 2 режима формирования медиапула:
1. Upload video files -> Загрузка ваших MP4/WebM с автосохранением в IndexedDB
2. Add 4 demo streams -> Генерация 4 потоков Canvas 640x360 + Web Audio (220-520 Hz)
ШАГ 04 · Инспекция и Нагрузка

Запустите пары пиров и управляйте живыми сессиями

Запустите нужное количество пар, убедитесь в появлении зеленых плашек с выделенными портами релея, проверьте переключение портов на лету кнопкой «Ice restart» и протестируйте удаление ключей через «Revoke redis key».

ШАГ 04
Pairs to spawn: 10 -> [Spawn pairs]
Peer 1: relay 99.999.999.99:49213 | 2557 kbps · 117.86 mb · rtt: 250.0 ms
Peer 2: relay 99.999.999.99:49212 | 1560 kbps · 68.54 mb  · rtt: 230.0 ms
Спецификации

Полные технические характеристики Slyber Inspector

Архитектура интерфейса, поддерживаемые режимы проверки, внутренние API и параметры развертывания.

Модули платформы
Slyber TURN Server (активен: полная инспекция STUN/TURN, Redis и медиа-релея), Slyber SFU Server, Slyber Signaling Server
Сетевой порт и параметры запуска
8095/TCP по умолчанию (переменная окружения LISTEN_ADDR="0.0.0.0:8095" или флаг командной строки -addr 127.0.0.1:8095)
Тестируемые транспорты и политики ICE
UDP (turn:3478), TCP (turn:3478), TLS (turns:5349), комбинированный UDP + TCP; политики iceTransportPolicy: relay only (принудительный TURN) и all (STUN + TURN)
Режимы провижининга учетных данных
Secret Mode (локальная генерация HMAC-SHA1 или HTTP-запрос к /api/turn-credentials) и Redis Mode (запись RFC 5389 MD5 хешей в turn/realm//user//key с TTL)
Внутренние HTTP и WebSocket эндпоинты
POST /api/check (проверка STUN RTT и связи с Redis), POST /api/provision (выдача ключей для пары пиров), POST /api/revoke (удаление ключа в Redis), WS /ws (сигналинг)
Источники медиапотоков и генератор пар
Загрузка локальных видеофайлов (захват через captureStream + Web Audio API) и синтезатор 4 демо-потоков (Canvas 640x360 @ 30fps + синусоидальные осцилляторы 220/330/440/520 Гц)
Персистентность состояния в браузере
Сохранение всех полей конфигурации и активного таба в localStorage (slyber_test_server_settings_v3); хранение загруженных видео-блобов в IndexedDB (slyber_test_server_db)
Живая телеметрия и управление сессией
Опрос RTCPeerConnection.getStats() каждую секунду (битрейт kbps/mbps, объем данных в МБ, RTT в мс, адрес и порт релея); кнопки Ice restart, Revoke redis key и выборочный Mute
Исполняемый файл и systemd-сервис
Статический бинарник /usr/local/bin/slyber_test со встроенной статикой; автоустановка службы slyber_test.service от системного пользователя slyber_test (LimitNOFILE=65535)
Поддерживаемые платформы и контейнеризация
Linux (amd64, arm64) и macOS (darwin amd64, arm64) с проверкой SHA256SUMS; официальный Docker-образ ghcr.io/slyber-app/slyber-inspector:latest на базе Alpine 3.20 (UID 10001)
Сценарии применения

Где Slyber Inspector экономит часы работы инженеров

01 / 03
01 DevOps & Release QA

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

Комплексная проверка нового или обновленного TURN сервера перед подачей трафика в продакшен верификация выделения UDP/TCP релейных портов, правильности внешнего PUBLIC_IP и прохождения медиа.

02 Security & Access Control

Отладка Redis авторизации и мгновенного отзыва сессий

Наглядная проверка работы динамической авторизации через Redis тестирование корректности записи RFC 5389 MD5 ключей, соблюдения TTL и реакции системы на принудительное удаление ключа во время звонка.

03 Load & Stress Testing

Нагрузочное тестирование канала реальным видеопотоком

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

04 Firewall & TLS Verification

Тестирование обхода блокировок по TCP и TURNS (TLS)

Проверка способности клиентов устанавливать релейные соединения через строгие файрволы путем переключения транспорта в инспекторе между UDP, TCP и шифрованным TLS (turns:5349).

05 Mobile Roaming QA

Инспекция бесшовного роуминга и процедуры ICE Restart

Верификация механизма make-before-break при смене сети проверка того, что при нажатии Ice restart сервер мгновенно выделяет новые релейные порты без фризов видео и потери аудиодорожки.

06 Developer Experience

Постоянный лабораторный стенд для команд разработки

Постоянно развернутый внутренний стенд для инженеров разработки и технической поддержки, позволяющий за 10 секунд воспроизвести любую сетевую ситуацию без настройки клиентских приложений.

База знаний и FAQ

Часто задаваемые вопросы о Slyber Inspector

Ответы на частые технические вопросы инженеров и QA специалистов по визуальному тестированию WebRTC приложений, TURN, SFU, Signaling серверов.

Зачем нужен Slyber Inspector, если у Slyber TURN сервера уже есть консольные утилиты doctor и bench? +
В отличие от консольных утилит, которые проверяют только базовый STUN отклик или гоняют синтетические UDP пакеты без реального медиа стека браузера, Slyber Inspector поднимает полноценные двусторонние соединения RTCPeerConnection прямо в браузере. Вы визуально контролируете передачу видео и звука между парами пиров, видите фактически выделенные релейные IP:порт каждого участника, проверяете работу кодеков, тестируете ICE Restart на живом звонке и управляете ключами в Redis в один клик.
Как Slyber Inspector работает с режимами авторизации secret (HMAC) и redis? +
Инспектор поддерживает оба промышленных режима авторизации. В режиме «secret» он может генерировать временные пароли HMAC-SHA1 локально по вашему TURN_SECRET либо запрашивать их по сети у эндпоинта /api/turn-credentials. В режиме «redis» бэкенд инспектора автоматически генерирует уникальные учетные записи для каждого пира (например, p1_u1_a8f9c2), вычисляет MD5-хеш по стандарту RFC 5389 от строки username:realm:password и записывает ключ вида turn/realm//user//key напрямую в ваш Redis с заданным TTL.
Как гарантировать, что трафик между пирами в одной вкладке идет строго через удаленный TURN сервер, а не напрямую? +
При выборе политики «relay only (force turn)» браузеру передается параметр конфигурации iceTransportPolicy: 'relay'. Это полностью отключает установку прямых локальных соединений (host и srflx кандидатов) даже в том случае, когда оба пира запущены в одной вкладке на одном компьютере. Весь видео- и аудиопоток гарантированно уходит на внешний интерфейс вашего TURN сервера и возвращается обратно через выделенные релейные порты.
Нужно ли заново загружать видеофайлы и вводить настройки сервера после каждой перезагрузки страницы? +
Да, все загруженные через кнопку «Upload video files» локальные видеоролики автоматически сохраняются в встроенную базу данных браузера IndexedDB (хранилище slyber_test_server_db), а настройки подключения, ключи и активная вкладка записываются в localStorage. После перезагрузки страницы или перезапуска браузера ваш пул видео и конфигурация интерфейса восстанавливаются автоматически. Если локальных видео под рукой нет, кнопка «Add 4 demo streams» создаст 4 процедурных потока на базе HTML5 Canvas и генераторов звука Web Audio API (220–520 Гц).
Что именно проверяет кнопка Ice restart внутри карточки активной пары? +
Кнопка «Ice restart» в карточке пары вызывает стандартный метод WebRTC pc.createOffer({ iceRestart: true }), имитируя переключение клиента между сетями (например, переход смартфона с Wi-Fi на 4G/LTE). Браузер генерирует новые параметры ice-ufrag и ice-pwd, запрашивает у TURN сервера новую пару релейных портов и бесшовно по схеме make-before-break переключает медиапоток на новый маршрут без прерывания воспроизведения видео.
Как протестировать принудительное отключение пользователя и отзыв ключей в Redis? +
Когда выбран режим авторизации «redis», в карточке каждого пира появляется кнопка «Revoke redis key». При нажатии на неё Slyber Inspector отправляет запрос на свой внутренний эндпоинт /api/revoke, который мгновенно выполняет команду DEL для ключа данного пользователя в базе Redis. Это позволяет наглядно проверить, как ваш TURN сервер и клиентское приложение реагируют на принудительное аннулирование доступа во время активной сессии или при попытке сделать ICE Restart.
Почему для запуска пар требуется минимум два видеоисточника в пуле? +
Да, для того чтобы исключить наложение одинаковых картинок и визуально убедиться в корректной двусторонней маршрутизации, Slyber Inspector требует минимум 2 источника в медиапуле. При создании каждой пары алгоритм случайно выбирает два разных видеоролика: Peer 1 отправляет первому потоку видео А и принимает на экран видео Б, а Peer 2 отправляет видео Б и принимает видео А. Аудиодорожку любого пира можно включить или отключить индивидуально.
Какие модули входят в состав Slyber Inspector помимо тестирования TURN сервера? +
Slyber Inspector спроектирован как модульная платформа для всей экосистемы реального времени Slyber. Модуль Slyber TURN Server доступен и полностью функционален уже сейчас, а специализированные рабочие пространства для нагрузочного тестирования медиа-маршрутизатора Slyber SFU Server (проверка Simulcast и подписок) и сигнального узла Slyber Signaling Server (бенчмарк комнат и WebSocket событий) находятся в активной разработке и будут разблокированы в ближайших обновлениях.
Руководство по верификации и нагрузочному тестированию WebRTC

Почему для надежной работы WebRTC инфраструктуры необходим визуальный интерфейс

Развертывание и поддержка собственной инфраструктуры реального времени - будь то TURN/STUN релей, селективный медиа маршрутизатор (SFU) или сигнальный сервер - всегда сопряжены со сложностью сквозной проверки. Консольные проверки сокетов показывают лишь то, что порт открыт, но не дают ответа на главные вопросы инженера проходит ли реальный видео и аудиопоток браузера через релей, корректно ли срабатывает авторизация в Redis, не обрывается ли звонок при процедуре ICE Restart и какую пропускную способность выдерживает узел при одновременной работе десятков пар пользователей. Именно для решения этих задач создан Slyber Inspector.

Как работает Slyber Inspector и чем он заменяет самописные тестовые стенды

Обычно для проверки нового TURN сервера разработчикам приходится поднимать тестовое веб приложение, настраивать сигнальный обмен, вручную генерировать учетные данные в базе и открывать несколько браузеров. Slyber Inspector объединяет все эти компоненты в одном компактном Go бинарнике slyber_test, который разворачивается за 30 секунд:

  • Встроенный сигнальный WebSocket сервер и генератор пар: При нажатии на кнопку Spawn pairs приложение создает заданное количество независимых пар RTCPeerConnection прямо внутри вкладки браузера. Встроенный сигнальный канал /ws мгновенно проводит обмен SDP Offer/Answer и ICE-кандидатами. При выборе политики relay only (force turn) прямые соединения принудительно блокируются, и каждый байт видео и звука проходит через ваш внешний TURN сервер по протоколам UDP, TCP или TLS.
  • Автоматическая подготовка ключей в режимах Secret и Redis: Внутренний эндпоинт /api/provision берет на себя всю криптографию. В режиме secret он либо локально вычисляет временные HMAC-SHA1 токены, либо запрашивает их у HTTP API самого TURN сервера (/api/turn-credentials). В режиме redis инспектор автоматически подключается к указанному инстансу Redis, вычисляет 32-символьный MD5-хеш по стандарту RFC 5389 и записывает ключи вида turn/realm/<REALM>/user/<USERNAME>/key с нужным временем жизни (TTL).
  • Тестирование отзыва доступа и ICE Restart в реальном времени: Каждая карточка пары оснащена кнопкой Revoke redis key, которая удаляет ключ конкретного участника из базы данных Redis прямо во время разговора, позволяя проверить реакцию инфраструктуры на аннулирование прав. Кнопка Ice restart запускает пересогласование сессии createOffer({ iceRestart: true }) и наглядно демонстрирует бесшовную смену выделенных релейных UDP-портов без остановки видеоплеера.
  • Сохранение медиапула в IndexedDB и синтетические потоки: Загруженные с компьютера видеофайлы сохраняются во встроенной базе браузера IndexedDB, а все настройки подключения и выбранная вкладка - в localStorage. Даже после перезагрузки страницы ваш тестовый стенд полностью готов к бою. А если нужно быстро проверить сервер с чистой машины без видеофайлов, встроенный генератор создаст 4 различных синтетических потока на базе Canvas и Web Audio API.
Visual WebRTC & TURN Verification Suite

Готовы протестировать вашу WebRTC инфраструктуру под реальной нагрузкой?

Забудьте о ручной сборке тестовых WebRTC клиентов и догадках при отладке сетевых проблем. Разверните единый бинарник Slyber Inspector со встроенным генератором видеопар, инспекцией Redis ключей и живой телеметрией прямо сейчас.