Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Conexiones entre pares

RTCPeerConnection es la interfaz central en la API de WebRTC. Representa la conexión entre el par local y el remoto, y proporciona todas las funciones y eventos necesarios para establecer la conexión.

Establecer una conexión entre pares

Las aplicaciones que implementan la funcionalidad WebRTC generalmente dependerán en gran medida de la interfaz RTCPeerConnection . Desde el lado de la persona que llama (es decir, el igual que inicia una conexión), el proceso para establecer una conexión suele ser el siguiente:

  1. Cree una nueva instancia de RTCPeerConnection con la configuración ICE adecuada.
  2. Cree una descripción de SDP local utilizando RTCPeerConnection.createOffer() .
  3. Establezca la descripción del SDP local utilizando RTCPeerConnection.setLocalDescription() .
  4. Transfiera (utilizando un servicio de señalización) la descripción del SDP local al par remoto.
  5. Registre un oyente para eventos icecandidate en RTCPeerConnection .
  6. Para cada evento icecandidate , transfiéralo (usando un servicio de señalización) al par remoto.
  7. Espere una descripción SDP remota entrante del servicio de señalización y RTCPeerConnection.setRemoteDescription() usando RTCPeerConnection.setRemoteDescription() .
  8. Espere a los candidatos ICE remotos entrantes del servicio de señalización y agréguelos usando RTCPeerConnection.addIceCandidate()

En el lado de la llamada, el proceso es un poco diferente.

  1. Cree una nueva instancia de RTCPeerConnection con la configuración ICE adecuada.
  2. Espere una descripción SDP remota entrante del servicio de señalización y RTCPeerConnection.setRemoteDescription() usando RTCPeerConnection.setRemoteDescription() .
  3. Cree una respuesta para la descripción remota del SDP llamando a RTCPeerConnection.createAnswer() .
  4. Transfiera (utilizando un servicio de señalización) la respuesta al par remoto.
  5. Registre un oyente para eventos icecandidate en RTCPeerConnection .
  6. Para cada evento icecandidate , transfiéralo (usando un servicio de señalización) al par remoto.
  7. Espere a los candidatos ICE remotos entrantes del servicio de señalización y agréguelos usando RTCPeerConnection.addIceCandidate()

El desafío con esta API es que la mayoría de estas operaciones son asíncronas, lo que a menudo complica la implementación real de una aplicación WebRTC. Muchas de las funciones devuelven una Promise que debe resolverse antes de que el siguiente paso en el proceso pueda continuar.

Se recomienda que al implementar una aplicación que use esta API, el desarrollador haga uso de async y await lugar de registrar oyentes (usando Promise.then() ), ya que esto hace que su código sea más fácil de seguir. Considere el siguiente ejemplo:

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

Al escribir el código anterior usando async y await , obtenemos lo siguiente:

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