Repolode
dmotz

dmotz/trystero

Biblioteca JavaScript para criar apps web multiplayer em que os navegadores se conectam diretamente por WebRTC, sem precisar manter um servidor próprio.

Estrelas
2,796
Forks
161
Issues abertas
7
Último commit
ontem

O que é?

O Trystero cuida da etapa de matchmaking normalmente exigida pelo WebRTC. Os navegadores entram em uma sala usando um ID e se encontram por um canal de sinalização, como Nostr (o padrão), BitTorrent, MQTT, IPFS, Supabase, Firebase ou um relay WebSocket hospedado por você. Depois de conectados, os dados da aplicação trafegam diretamente entre os peers com criptografia ponta a ponta, então o meio de sinalização transporta apenas os detalhes da conexão.

Além do WebRTC, a biblioteca oferece salas e broadcasting, actions tipadas para enviar mensagens, serialização automática e divisão em partes de payloads grandes, eventos de progresso, chamadas de requisição/resposta e suporte a streams de áudio e vídeo. A mesma API funciona no navegador e no Node, Bun e Deno, e a biblioteca também inclui hooks para React. Para trocar de estratégia, basta alterar o pacote importado.

O Trystero é escrito em TypeScript e distribuído no npm com o nome de pacote trystero; os pacotes específicos de cada estratégia ficam no escopo @trystero-p2p.

Recursos principais

  • 01Descoberta de peers sem servidor via Nostr, BitTorrent, MQTT, IPFS, Supabase, Firebase ou relay WebSocket
  • 02Salas com broadcasting e actions personalizadas tipadas para mensagens entre peers
  • 03Serialização automática e divisão de dados grandes em partes, com eventos de progresso
  • 04Compartilhamento de streams de áudio e vídeo entre peers
  • 05Criptografia opcional de sessão baseada em senha e suporte a servidor TURN
  • 06Funciona em navegadores e no servidor com Node, Bun e Deno

Casos de uso

  • Criar um jogo multiplayer para navegador sem precisar manter um backend
  • Criar uma sala privada de áudio ou vídeo entre usuários
  • Transferir arquivos diretamente entre navegadores em um app web
  • Sincronizar estados compartilhados, como cursores ou dados de formulários, entre colaboradores

Início rápido

  1. 1

    Instale o Trystero com npm

    npm i trystero
  2. 2

    Importe joinRoom no seu código

  3. 3

    Entre em uma sala usando um appId exclusivo e um ID de sala

Antes de usar

  • A descoberta de pares depende de uma rede de estratégia de terceiros, como Nostr, MQTT ou Supabase. Portanto, seu app depende da disponibilidade dessa rede.
  • Os navegadores só conseguem lidar com um número limitado de conexões WebRTC, então as salas devem ser pequenas.
  • Os arquivos recebidos precisam caber na memória do navegador, e cada sala tem um limite de recebimento padrão de 256 MiB.

Tópicos

Perguntas frequentes

O que é trystero?
Biblioteca JavaScript para criar apps web multiplayer em que os navegadores se conectam diretamente por WebRTC, sem precisar manter um servidor próprio. O Trystero cuida da etapa de matchmaking normalmente exigida pelo WebRTC. Os navegadores entram em uma sala usando um ID e se encontram por um canal de sinalização, como Nostr (o padrão), BitTorrent, MQTT, IPFS, Supabase, Firebase ou um relay WebSocket hospedado por você. Depois de conectados, os dados da aplicação trafegam diretamente entre os peers com criptografia ponta a ponta, então o meio de sinalização transporta apenas os detalhes da conexão.
trystero é gratuito? Qual é a licença?
trystero é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
trystero ainda é mantido?
Manutenção ativa. O último commit de trystero foi em 18 de out. de 2026.
Para que posso usar trystero?
Criar um jogo multiplayer para navegador sem precisar manter um backend Criar uma sala privada de áudio ou vídeo entre usuários Transferir arquivos diretamente entre navegadores em um app web Sincronizar estados compartilhados, como cursores ou dados de formulários, entre colaboradores
Como instalar trystero?
Instale o Trystero com npm: npm i trystero Importe joinRoom no seu código Entre em uma sala usando um appId exclusivo e um ID de sala
Onde consigo trystero?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/dmotz/trystero

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados