Открытый SFU-сервер WebRTC на Go для передачи голоса, видео и данных в реальном времени — основа для связи людей и AI-агентов.
dmotz/trystero
Библиотека JavaScript для создания многопользовательских веб-приложений с прямым P2P-подключением браузеров по WebRTC без собственного сервера.
- Звёзды
- 2,796
- Форки
- 161
- Открытые issues
- 7
- Последний коммит
- позавчера
Что это?
Trystero берет на себя поиск участников — этап, который обычно необходим для работы WebRTC. Браузеры подключаются к комнате по ID и находят друг друга через сигнальный канал, например Nostr (используется по умолчанию), BitTorrent, MQTT, IPFS, Supabase, Firebase или собственный WebSocket-ретранслятор. После подключения данные приложения передаются напрямую между участниками и шифруются сквозным шифрованием, поэтому через сигнальный канал проходят только сведения, необходимые для установления соединения.
Поверх WebRTC библиотека предоставляет комнаты и широковещательную передачу, типизированные actions для отправки сообщений, автоматическую сериализацию и разбиение больших payload на части, события отслеживания прогресса, вызовы request/response и поддержку аудио- и видеопотоков. Один и тот же API работает в браузере, а также в Node, Bun и Deno; в комплект входят и React hooks. Чтобы сменить стратегию, достаточно импортировать другой пакет.
Trystero написана на TypeScript и распространяется через npm под именем пакета trystero; пакеты для отдельных стратегий доступны в scope @trystero-p2p.
Ключевые возможности
- 01Обнаружение участников без сервера через Nostr, BitTorrent, MQTT, IPFS, Supabase, Firebase или WebSocket-ретранслятор
- 02Комнаты с широковещательной передачей и типизированными пользовательскими actions для обмена сообщениями между участниками
- 03Автоматическая сериализация и разбиение больших данных на части с событиями отслеживания прогресса
- 04Обмен аудио- и видеопотоками между участниками
- 05Дополнительное шифрование сеанса по паролю и поддержка TURN-серверов
- 06Работает в браузерах и на серверной стороне в Node, Bun и Deno
Сценарии использования
- Создание многопользовательской игры для браузера без поддержки собственного backend
- Организация приватной комнаты для аудио- или видеозвонков между пользователями
- Передача файлов напрямую между браузерами в веб-приложении
- Синхронизация общего состояния, например курсоров или данных формы, между участниками совместной работы
Быстрый старт
- 1
Установите Trystero с помощью npm
npm i trystero - 2
Импортируйте joinRoom в код
- 3
Присоединитесь к комнате, указав уникальный appId и ID комнаты
Что важно знать
- Обнаружение пиров зависит от сторонней сети стратегий, например Nostr, MQTT или Supabase, поэтому для работы приложения эта сеть должна быть доступна.
- Браузеры могут поддерживать лишь ограниченное количество WebRTC-соединений, поэтому размер комнат следует ограничивать.
- Получаемые файлы должны помещаться в память браузера, а лимит на приём данных для каждой комнаты по умолчанию составляет 256 MiB.
Темы
Частые вопросы
- Что такое trystero?
- Библиотека JavaScript для создания многопользовательских веб-приложений с прямым P2P-подключением браузеров по WebRTC без собственного сервера. Trystero берет на себя поиск участников — этап, который обычно необходим для работы WebRTC. Браузеры подключаются к комнате по ID и находят друг друга через сигнальный канал, например Nostr (используется по умолчанию), BitTorrent, MQTT, IPFS, Supabase, Firebase или собственный WebSocket-ретранслятор. После подключения данные приложения передаются напрямую между участниками и шифруются сквозным шифрованием, поэтому через сигнальный канал проходят только сведения, необходимые для установления соединения.
- trystero можно использовать бесплатно? Какая у него лицензия?
- trystero распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- trystero всё ещё поддерживается?
- Активно поддерживается. Последний коммит в trystero — 18 окт. 2026 г..
- Для чего можно использовать trystero?
- Создание многопользовательской игры для браузера без поддержки собственного backend Организация приватной комнаты для аудио- или видеозвонков между пользователями Передача файлов напрямую между браузерами в веб-приложении Синхронизация общего состояния, например курсоров или данных формы, между участниками совместной работы
- Как установить trystero?
- Установите Trystero с помощью npm: npm i trystero Импортируйте joinRoom в код Присоединитесь к комнате, указав уникальный appId и ID комнаты
- Где скачать trystero?
- Исходный код и инструкции по установке — на GitHub: https://github.com/dmotz/trystero
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Авторитетный мультиплеерный фреймворк для Node.js с синхронизацией состояния, подбором игроков по комнатам и клиентскими SDK для web, Unity, Godot и других платформ.
Лёгкий бэкенд, который можно разместить у себя: база данных, аутентификация, медиа и рабочие процессы на основе Web Standards для разных сред выполнения и фреймворков.
Быстрый универсальный инструментарий для JavaScript и TypeScript: runtime, bundler, тестовый раннер и пакетный менеджер в одном исполняемом файле.
Быстрая библиотека для 2D-рендеринга в вебе: рисует графику, спрайты и текст с помощью WebGL и WebGPU.
Лёгкая ORM без лишних абстракций для TypeScript, поддерживающая PostgreSQL, MySQL и SQLite в Node.js, Bun, Deno и edge-средах.