Skip to content

🎙️🌌 Using Web RTC + WS, communicate via audio in real time directly from the browser

Notifications You must be signed in to change notification settings

luiisp/vox-link

Repository files navigation

Vox Link 🎙️🌌

en

Speak in English? Access Readme.md in English

Tag this project with a star 🌟

O Vox Link é uma plataforma de comunicação de voz em tempo real criada e idealizada por mim, na qual usuários podem se conectar em salas ou criar as suas próprias salas e conversar em tempo real por chamada de voz diretamente do navegador.

Como é possivel estabelecer uma chamada em tempo real entre múltiplos usuários direto pelo navegador?

Tudo é feito utilizando WebRTC (Web Real-Time Communication), mas no nosso caso, especialmente feito com PeerJS, que facilita o desenvolvimento e é ótimo no nosso caso. A conexão que permite a comunicação entre os diferentes navegadores é P2P, e tudo que trafega é o stream de cada usuário. No entanto, como é de se imaginar, isso pode causar grandes problemas, pois utilizar conexão P2P descentraliza nossa aplicação, fazendo com que o servidor perca sua autonomia de controlar seus próprios clientes. Por isso, em paralelo, é importante ter um Servidor WebSocket para controlar os estados dos clientes, assim como sinalizar a estabilização de conexões e gerenciar o tráfego de outros dados, dando mais autonomia ao servidor e "centralizando" a conexão (vale lembrar que, apesar de tudo, ainda são duas conexões separadas e diferentes uma da outra). Um dos grandes desafios é manter o controle sobre o cliente nessas circunstâncias, pois ao estabelecer essa conexão P2P, o servidor não tem controle sobre os dados que trafegam entre os pares.

Abaixo temos uma imagem de como funciona as conexões Peer to Peer + Web Sockets no VOX LINK

No caso do Vox Link, o stream que trafega é o áudio, mas poderia ser facilmente adicionado vídeo ou similar. Com a nossa aplicação seguindo o fluxo acima, garantimos mais controle sobre o usuário, mas é de se reconhecer que sim, é possível melhorar especialmente a segurança. Uma vez que, utilizando o fluxo acima, usuários podem transmitir livremente o que quiserem, então outras técnicas podem ser implementadas para dar mais autonomia ao servidor neste tipo de conexão. Sinta-se livre para contribuir para o projeto.

Features

  • Criação de salas independentes
  • Limitação de Usúarios por salas
  • Verificação de Campos
  • Comunicação por voz em tempo real
  • Mutar Microfone / Sair de salas
  • Auto-Exclusão de salas inativas (< 0 usuários)
  • Opera totalmente em memória (nenhum banco de dados necessário)

UI Screenshots

image image image image

Dependências

  • peer
  • ejs
  • express
  • socket.io
  • tailwindcss
  • postcss

Rodando

  • Clone este repo com git clone https://github.com/luiisp/vox-link
  • Entre no Diretório com cd vox-link
  • Instale as dependências necessárias usando npm install
  • Inicie o servidor de desenvolvimento com npm run dev

Experimente Abrir em duas diferentes janelas ou em aparelhos diferentes.

A conexão pode não ser estabelecida por navegadores em dispositivos móveis, como aparelhos celulares, pois eles exigem SSL. voxlink

About

🎙️🌌 Using Web RTC + WS, communicate via audio in real time directly from the browser

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published