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.
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.
- 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)
- peer
- ejs
- express
- socket.io
- tailwindcss
- postcss
- 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.