Архитектура без серверной инфраструктуры
Традиционные веб-приложения требуют развертывания серверов для сигнализации (обмена SDP-данными) и маршрутизации трафика. Trystero абстрагирует этот процесс, позволяя браузерам находить друг друга и устанавливать прямые P2P-соединения. Ключевое преимущество: после установления связи данные никогда не проходят через узлы стратегии (relay), а передаются end-to-end зашифрованными напрямую между пользователями.
Разработчики могут выбирать один из нескольких механизмов обнаружения пиров, используя единый API:
| Стратегия подключения | Пакет импорта | Особенности использования |
|---|---|---|
| Nostr (по умолчанию) | trystero |
Децентрализованная социальная сеть, низкий порог входа |
| BitTorrent | @trystero-p2p/torrent |
Использование P2P-сети для сигнализации |
| MQTT | @trystero-p2p/mqtt |
Легковесный протокол обмена сообщениями |
| Supabase | @trystero-p2p/supabase |
Использование БД Supabase как ретранслятора сигналов |
| Firebase | @trystero-p2p/firebase |
Интеграция с Realtime Database Firebase |
| IPFS | @trystero-p2p/ipfs |
Децентрализованная файловая система |
| Self-hosted WebSocket | @trystero-p2p/ws-relay |
Полный контроль над инфраструктурой сигнализации |
Абстракции для работы с данными и медиа
Trystero предлагает готовые решения для типичных задач мультиплеера, избавляя от написания boilerplate-кода:
- Комнаты (Rooms): Ограничивают количество одновременных WebRTC-соединений, разделяя пользователей на логические группы.
- Автоматическая сериализация: Библиотека сама обрабатывает преобразование данных. Можно отправлять объекты, числа, строки и бинарные данные (ArrayBuffer, Blob), и они будут доставлены в исходном типе.
- Чанкирование и throttling: Большие объемы данных автоматически разбиваются на части и передаются с контролем скорости, предотвращая перегрузку канала.
- Промисы и события прогресса: Операции передачи данных возвращают промисы, а также доступны события для отслеживания статуса загрузки.
- Медиа-стримы: Встроенная поддержка аудио и видео. Метод
addStreamпозволяет отправлять поток всем текущим участникам или тем, кто присоединится позже.
API и интеграция с фреймворками
Основной метод подключения — joinRoom(config, roomId). Параметр appId должен быть уникальным для каждого приложения (для Firebase это databaseURL, для Supabase — URL проекта). Библиотека поддерживает TypeScript с строгой типизацией действий (actions).
Для React-разработчиков предусмотрены хуки, упрощающие управление состоянием комнаты. Кроме того, Trystero может работать не только в браузере, но и на стороне сервера (Node.js, Bun, Deno), что позволяет создавать гибридные P2P-системы.
Почему это важно
Trystero снижает барьер для создания децентрализованных приложений (dApps), устраняя необходимость в управлении серверной инфраструктурой для сигнализации. Это открывает возможности для создания цензуроустойчивых чатов, совместных редакторов и игр с минимальными затратами на развертывание. Поддержка множества стратегий подключения позволяет адаптировать решение под требования к приватности, скорости и доступности сети.
Источник: Github ↗
