Pion Handoff
- title
- Pion Handoff
- type
- toolbox
- summary
- Запускает сессию WebRTC в браузере и переносит медиасоединение в Go-бэкенд
- tags
- golang, webrtc, networking
- language
- Go
- license
- MIT
- created
- 2026-04-07
- updated
- 2026-04-07
- lang
- ru
- translation_of
- pion-handoff
- source_updated
- 2026-04-07
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Запускает сессию WebRTC в браузере, а затем передаёт само медиасоединение процессу бэкенда на Go. Браузер проходит аутентификацию и начинает сигналинг в штатном режиме, но WebRTC API перехватывается: сигналинг перенаправляется в Handoff, который устанавливает настоящее peer-to-peer соединение на стороне сервера через Pion.
Принцип работы
- Браузер открывает целевой сайт и штатно проходит аутентификацию
- Сайт начинает WebRTC-сигналинг (обмен offer/answer)
- Пользовательский скрипт (Greasemonkey) перехватывает
RTCPeerConnectionв браузере, подменяя API - Данные сигналинга пересылаются в бэкенд Handoff
- Handoff поднимает реальную WebRTC-сессию с удалённым узлом через Go-стек WebRTC библиотеки Pion
Браузер считает, что идёт обычный WebRTC-звонок. Удалённый узел считает, что общается с браузером. Реальный же медиапоток идёт через ваш бэкенд.
Сценарии использования
Запись -> подключиться к видеозвонку и сохранять медиаданные на сервере в виде сырого RTP. Без записи экрана и браузерных ограничений: вы получаете потоки ровно в том виде, в каком они приходят.
Отправка -> подмешивать внешнее видео в звонок. Можно направить в соединение вывод FFmpeg, поток с камеры или сгенерированное видео. Удалённый узел видит его как обычное видео из браузера, но источник контролируете вы.
Реверс-инжиниринг -> перехват сырого трафика ICE, DTLS, RTP, RTCP и SCTP для анализа протоколов и отладки. Удобно для изучения того, как конкретный WebRTC-сервис ведёт себя на уровне сети.
Примеры
datachannel-> базовая страница с Data Channel и возможностью переопределенияmedia-save-> записывает видео VP8 на бэкенде, одновременно отображая его в браузереmedia-send-> пересылает VP8 RTP с бэкенда в сессию браузераgreasemonkey-> автоматически генерирует пользовательские скрипты для перехватаRTCPeerConnection
Контекст
Проект создан Шоном Дюбуа (Sean DuBois), автором Pion (стека WebRTC на Go). Это тонкий слой оркестрации поверх библиотек Pion: фундамент WebRTC здесь давно отлажен, хотя сам Handoff находится на ранней стадии (15 коммитов, один автор). Go 59%, JavaScript 41%.
70 звёзд, лицензия MIT. Репозиторий: https://github.com/pion/handoff