Repolode
dmotz

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. 1

    Установите Trystero с помощью npm

    npm i trystero
  2. 2

    Импортируйте joinRoom в код

  3. 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 обновляется ежедневно.

Похожие проекты

Лёгкий бэкенд, который можно разместить у себя: база данных, аутентификация, медиа и рабочие процессы на основе Web Standards для разных сред выполнения и фреймворков.

3,8 тыс.146TypeScriptApache-2.0Обновлён 26 дней назад