Desenvolvimento WebRTC e peer-to-peer
Construímos sistemas em tempo real e peer-to-peer: ligar duas máquinas diretamente através de redes hostis, manter a latência baixa o suficiente para interação ao vivo e recorrer a um relay autenticado quando não é possível estabelecer um percurso direto.
O que significa aqui tempo real e peer-to-peer
Ligar dois dispositivos diretamente é mais difícil do que parece: a maioria está atrás de NAT e firewalls que recusam tráfego não solicitado. Construímos o percurso completo: o NAT traversal, a coordenação que o estabelece e um relay autenticado para os casos em que a ligação direta não é possível.
- Ligações peer-to-peer diretas através de NAT e firewalls
- Coordenação de sessões: quem liga a quem, e quando
- Relay autenticado de recurso para redes restritivas
- Transporte cifrado entre pares, com identidade verificada
- Canais de áudio, vídeo e dados de baixa latência
- Bitrate adaptativo que reage às condições de rede em direto
Como construímos sistemas em tempo real
Projetamos para a rede que realmente tem, e não para a do diagrama. Essa rede perde pacotes, é assimétrica e está cheia de middleboxes. Cada camada é medida em condições reais.
- 1
Modelo de conectividade
Analisamos as condições reais da sua rede (classes de NAT, firewalls, a fração de utilizadores que vai precisar de um relay) e desenhamos a estratégia de ligação a partir delas.
- 2
Coordenação e transporte
Um serviço de sinalização coordena os pares; o transporte é cifrado e a identidade verificada, com um relay autenticado como recurso.
- 3
Pipeline de multimédia
Onde há multimédia ao vivo em jogo, codificação e descodificação que adaptam a qualidade à largura de banda e à latência da ligação.
- 4
Testes de resiliência
Testamos nas classes de NAT mais comuns e em ligações degradadas, confirmando que o relay de recurso entra de forma limpa quando um percurso direto falha.
- 5
Operar e observar
Métricas sobre o sucesso das ligações, a taxa de recurso ao relay e a qualidade do stream, para que veja como o sistema se comporta no mundo real, e não apenas no laboratório.
O que recebe
Uma camada de conectividade que funciona na internet real, com a observabilidade para o comprovar e a documentação para a assumir.
- Uma camada de ligação peer-to-peer com NAT traversal e relay de recurso
- Um serviço de sinalização para a coordenação de sessões e pares
- Transporte cifrado entre pares, com identidade verificada
- Um percurso de multimédia com bitrate adaptativo, onde for necessário áudio/vídeo ao vivo
- Métricas de sucesso de ligação e de taxa de recurso ao relay integradas
- Documentação de arquitetura e uma transição para a sua equipa
Como construímos a camada de conectividade
Desenhamos a camada de conectividade à medida das condições reais da sua rede: direta sempre que a rede o permite e, quando não permite, através de um relay autenticado. Cada sessão é cifrada e cada identidade verificada.
Perguntas sobre tempo real e P2P
Todas as ligações passam a peer-to-peer?
A maioria consegue, mas nem todas as redes permitem um percurso direto. Um design fiável liga diretamente sempre que a rede o permite e, quando não permite, através de um relay autenticado. Assim a ligação mantém-se mesmo quando o verdadeiro peer-to-peer não é possível.
Isto é o mesmo que usar um serviço WebRTC alojado?
O WebRTC é um conjunto de blocos de construção; um serviço alojado envolve-os com a sinalização, os relays e os preços de outra pessoa. Podemos construir sobre WebRTC onde se adequa, ou implementar a camada de conectividade diretamente quando precisa de controlo sobre o transporte, o relay e o local por onde os dados fluem. Recomendamos o que servir as suas necessidades de latência, custo e residência de dados.
Como mantêm as ligações entre pares seguras?
O transporte é cifrado e a identidade verificada, por isso os pares sabem exatamente com quem estão a falar antes de circular qualquer dado, e um ataque man-in-the-middle não passa despercebido. Quando é usado, o relay é autenticado; não é um canal aberto.
Conseguem manter a multimédia fluida numa ligação fraca?
Sim. Construímos uma escala de bitrate adaptativa que responde à largura de banda e ao tempo de ida e volta em direto, sacrificando detalhe em favor da fluidez apenas quando é necessário. O stream escolhe o codec e o bitrate adequados à ligação em tempo real.