O documento discute a revolução da comunicação em tempo real através da WebRTC, uma API JavaScript que permite comunicação ponto-a-ponto entre navegadores, dispositivos móveis e IoT. A WebRTC oferece áudio e vídeo de alta qualidade de forma barata através de comunicação peer-to-peer e APIs nativas para obter mídia, conexões entre pares e canais de dados. O documento também explica conceitos como signaling, STUN, TURN e ICE que permitem a comunicação mesmo através de firewalls e NATs, al
2. Quem sou?
Nelson Dutra
● Engenharia de Computação UFPel
● Desenvolvedor Full Stack, SysAdmin
● Mozilla Brasil
● UFPel Rocket Team
3. O que é WebRTC?
WebRTC é um projeto gratuito e de código aberto que
permite comunicação em tempo real ponto a ponto
entre navegadores, dispositivos móveis e IoT através
de uma simples API JavaScript.
4. “WebRTC is a new front in the long war
for an open and unencumbered web”
Brendan Eich
– Mozilla CTO and inventor of JavaScript
5. Por que WebRTC?
● Baixo custo (P2P)
● Alta qualidade em áudio e vídeo
● Transferência de dados
● Multiplataforma
● APIs nativas
12. MediaStream
Web Audio
● Gráficos
● Fontes de áudio
● Destinos do áudio
● Efeitos
● Análise dos dados e visualização
● Processamento via JS
● Audio Spatialization
15. RTCDataChannel
Comunicação bidirecional de dados entre peers
● API semelhante a WebSockets
● Latência extremamente baixa
● Confiável
● Transmissão segura
● Suporte a vários protocolos da camada de transporte
19. Signaling
Responsável por trocar os objetos ‘session description’
● Formatos/codecs suportados
● O que desejo enviar
● Informações para setup da conexão P2P
● Pode ser feito por qualquer mecanismo de troca de mensagens
● Pode ser feito via qualquer protocolo
23. STUN
Session Traversal Utilities for NAT
● Descobre o IP Público
● Encontra porta alocada pelo NAT para UDP
● Servidor simples e barato
● Dados continuam sendo transmitidos P2P
25. TURN
Traversal Using Relays around NAT
● Realiza a comunicação caso P2P falhe
● Deve ser usado quando a NAT não é compatível com STUN
● Dados entre os usuários são trocados através do servidor
● Usa banda do servidor
● Garanta a conexão em quase todos os ambientes