O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Conexões de pares

O RTCPeerConnection é a interface central na API WebRTC. Representa a conexão entre o ponto local e remoto e fornece todas as funções e eventos necessários para estabelecer a conexão.

Estabelecendo uma conexão de mesmo nível

Os aplicativos que implementam a funcionalidade WebRTC geralmente dependem muito da interface RTCPeerConnection . Do lado dos chamadores (ou seja, o ponto que inicia uma conexão), o processo para estabelecer uma conexão é geralmente o seguinte:

  1. Crie uma nova instância RTCPeerConnection com a configuração apropriada do ICE.
  2. Crie uma descrição local do SDP usando RTCPeerConnection.createOffer() .
  3. Defina a descrição do SDP local usando RTCPeerConnection.setLocalDescription() .
  4. Transfira (usando um serviço de sinalização) a descrição do SDP local para o ponto remoto.
  5. Registre um ouvinte para eventos icecandidate no RTCPeerConnection .
  6. Para cada evento de icecandidate , transfira-o (usando um serviço de sinalização) para o ponto remoto.
  7. Aguarde uma descrição remota do SDP do serviço de sinalização e defina-a usando RTCPeerConnection.setRemoteDescription() .
  8. Aguarde os candidatos ICE remotos recebidos do serviço de sinalização e adicione-os usando RTCPeerConnection.addIceCandidate()

No lado do chamado, o processo é um pouco diferente.

  1. Crie uma nova instância RTCPeerConnection com a configuração apropriada do ICE.
  2. Aguarde uma descrição remota do SDP do serviço de sinalização e defina-a usando RTCPeerConnection.setRemoteDescription() .
  3. Crie uma resposta para a descrição remota do SDP chamando RTCPeerConnection.createAnswer() .
  4. Transfira (usando um serviço de sinalização) a resposta para o ponto remoto.
  5. Registre um ouvinte para eventos icecandidate no RTCPeerConnection .
  6. Para cada evento de icecandidate , transfira-o (usando um serviço de sinalização) para o ponto remoto.
  7. Aguarde os candidatos ICE remotos recebidos do serviço de sinalização e adicione-os usando RTCPeerConnection.addIceCandidate()

O desafio dessa API é que a maioria dessas operações é assíncrona, o que geralmente dificulta a implementação real de um aplicativo WebRTC. Muitas das funções retornam uma Promise que precisa ser resolvida antes que a próxima etapa do processo possa continuar.

Recomenda-se que, ao implementar um aplicativo usando essa API, o desenvolvedor faça uso de async e await vez de registrar ouvintes (usando Promise.then() ), pois isso facilita seu código. Considere o seguinte exemplo:

 function createAndSendOffer(peerConnection, signallingService) {
    peerConnection.createOffer()
                  .then(offer => {
                      signallingService.send({
                          type: 'offer',
                          data: offer
                      });
                  });
}
 

Ao escrever o código acima usando async e await , obtemos o seguinte:

 async function createAndSendOffer(peerConnection, signallingService) {
    const offer = await peerConnection.createOffer();
    signallingService.send({
        type: 'offer',
        data: offer
    });
}