Davi Augusto

en ptbr

Screenz: Compartilhamento de tela simples e seguro

Meu projeto pessoal mais recente, Screenz, começou como um breve estudo sobre a tecnologia WebRTC, mas, ao perceber que estava usando a ferramenta para fins práticos, decidi compartilhá-la.

Você pode acessá-lo em https://screenz.agst.dev.
Você também pode ver o código-fonte em https://github.com/agstrc/screenz.

O que é o Screenz?

Screenz é uma ferramenta web simples, criada para um propósito central: compartilhar sua tela com outra pessoa de forma fácil e rápida. Esqueça instalações complexas ou criação de contas. Com o Screenz, você começa a transmitir sua tela com apenas alguns cliques.

O processo é simples:

  1. Clique em “Iniciar Transmissão”.
  2. Compartilhe o “Código do Transmissor” exclusivo com quem você deseja que veja sua tela.
  3. A pessoa insere o código no site do Screenz e clica em “Assistir Transmissão” para se conectar diretamente à sua transmissão.

O foco é ser uma solução direta, sem complicações, priorizando uma conexão segura e com o mínimo de atraso entre o que você faz e o que o espectador vê. O objetivo é realmente compartilhar a tela sem esforço.

WebRTC

No coração do Screenz está o WebRTC—uma tecnologia poderosa que permite comunicação em tempo real, peer-to-peer, diretamente entre navegadores. WebRTC (Web Real-Time Communication) não é apenas um protocolo, mas sim um conjunto de padrões e APIs que possibilitam o fluxo de áudio, vídeo e dados de forma segura e eficiente entre usuários, sem a necessidade de servidores intermediários.

O que torna o WebRTC especialmente interessante para compartilhamento de tela é sua capacidade de estabelecer conexões diretas entre os participantes. Isso minimiza a latência e maximiza a privacidade, já que os dados da sua tela não passam por um servidor central. Em vez disso, os navegadores negociam a conexão usando um processo chamado sinalização e, então, trocam informações usando protocolos como ICE (Interactive Connectivity Establishment), STUN (Session Traversal Utilities for NAT) e DTLS (Datagram Transport Layer Security) para criptografia.

Sinalização é o processo inicial em que os pares trocam informações (como detalhes de rede e capacidades de mídia) necessárias para configurar a conexão peer-to-peer. Normalmente, isso é feito por meio de um servidor leve que apenas repassa essas mensagens de configuração entre os usuários. O mais importante é que, uma vez estabelecida a conexão, todos os dados da tela fluem diretamente entre os navegadores, sem passar pelo servidor.

Como o WebRTC é peer-to-peer, hospedar o Screenz foi simples: meu servidor só precisa lidar com a fase de sinalização, que é uma carga mínima e transitória se comparada ao tráfego de vídeo. Essa arquitetura facilita e barateia a oferta do serviço, já que o servidor não é um gargalo de banda ou desempenho.

Todos os principais navegadores suportam a API WebRTC, tornando possível criar aplicações robustas e multiplataforma como o Screenz. Embora a tecnologia envolva uma combinação complexa de protocolos de rede e multimídia, o resultado para o usuário é uma experiência fluida: compartilhamento de tela rápido, seguro e confiável com apenas alguns cliques.

Se você quiser se aprofundar em como o WebRTC funciona, recomendo fortemente o WebRTC for the Curious, que oferece uma excelente visão técnica.