Trystero: мультиплеер в браузере без головной боли с серверами
Представьте: вы хотите сделать онлайн-игру, чат или совместный редактор, но мысль о настройке серверов для синхронизации данных между пользователями вызывает дрожь. Знакомая ситуация? Тогда знакомьтесь — Trystero, библиотека, которая делает peer-to-peer взаимодействие между браузерами простым, как никогда.
Что в коробке?
Trystero — это JavaScript-библиотека, которая:
- Полностью избавляет от необходимости в сервере для matchmaking'а (подключения пользователей)
- Использует WebRTC для прямого соединения между браузерами
- Поддерживает 6 стратегий подключения: BitTorrent, Nostr, MQTT, Supabase, Firebase и IPFS
- Предоставляет удобную абстракцию над сложностями P2P-взаимодействия
Как это работает?
Обычно для WebRTC нужен сервер-посредник (signaling server), который помогает браузерам найти друг друга. Trystero же использует уже существующие децентрализованные сети в качестве этого посредника. После установки соединения данные идут напрямую между пользователями — быстро и без посредников.
Основные возможности
-
Автоматическое подключение пользователей
const room = joinRoom({appId: 'my-app'}, 'lobby'); room.onPeerJoin(peerId => console.log(`${peerId} присоединился`)); -
Передача любых данных — от сообщений до файлов
const [sendData, getData] = room.makeAction('chat'); sendData({text: 'Привет!', from: 'Анна'}); getData((msg) => console.log(msg.text)); // Привет! -
Аудио- и видеотрансляции
// Отправка потока с камеры room.addStream(await navigator.mediaDevices.getUserMedia({video: true})); // Получение потоков от других участников room.onPeerStream((stream, peerId) => { const video = document.createElement('video'); video.srcObject = stream; document.body.appendChild(video); });
Почему это круто?
- Никакого серверного кода — работает прямо из браузера
- Выбор стратегии подключения под ваши нужды
- Простота API — всего несколько методов для полноценного P2P-взаимодействия
- Автоматическая сериализация данных — отправляйте объекты, получайте объекты
- Прогресс передачи файлов — можно показывать красивый прогресс-бар
Кому это пригодится?
- Разработчикам браузерных игр
- Создателям чатов и видеочатов
- Командам, работающим над совместными редакторами
- Всем, кому нужно быстро прототипировать идеи с синхронизацией данных
Как начать?
Установка — пара команд:
npm install trystero
# или
<script type="module">
import {joinRoom} from 'https://esm.run/trystero'
</script>
А дальше — подключайте пользователей и наслаждайтесь простотой P2P. Полный пример чата умещается в 50 строк кода!
Trystero — отличный выбор, когда нужно:
- Быстро добавить мультиплеер в проект
- Избежать сложностей с серверами
- Использовать современные P2P-технологии
Проект активно развивается, имеет хорошую документацию и сообщество. Если вы давно хотели попробовать WebRTC, но пугались сложностей — самое время начать с Trystero.
