Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Connexions avec les pairs

RTCPeerConnection est l'interface centrale de l'API WebRTC. Il représente la connexion entre l'homologue local et distant et fournit toutes les fonctions et événements nécessaires pour établir la connexion.

Établir une connexion homologue

Les applications mettant en œuvre la fonctionnalité WebRTC reposent généralement fortement sur l'interface RTCPeerConnection . Du côté des appelants (c'est-à-dire du pair établissant une connexion), le processus pour établir une connexion est généralement le suivant:

  1. Créez une nouvelle instance RTCPeerConnection avec la configuration ICE appropriée.
  2. Créez une description SDP locale à l'aide de RTCPeerConnection.createOffer() .
  3. Définissez la description SDP locale à l'aide de RTCPeerConnection.setLocalDescription() .
  4. Transférez (à l'aide d'un service de signalisation) la description SDP locale vers l'homologue distant.
  5. Enregistrez un écouteur pour les événements icecandidate sur RTCPeerConnection .
  6. Pour chaque événement de icecandidate , transférez-le (à l'aide d'un service de signalisation) vers l'homologue distant.
  7. Attendez une description SDP distante entrante du service de signalisation et définissez-la à l'aide de RTCPeerConnection.setRemoteDescription() .
  8. Attendez les candidats ICE distants entrants du service de signalisation et ajoutez-les à l'aide de RTCPeerConnection.addIceCandidate()

Du côté de l'appelé, le processus est légèrement différent.

  1. Créez une nouvelle instance RTCPeerConnection avec la configuration ICE appropriée.
  2. Attendez une description SDP distante entrante du service de signalisation et définissez-la à l'aide de RTCPeerConnection.setRemoteDescription() .
  3. Créez une réponse pour la description SDP distante en appelant RTCPeerConnection.createAnswer() .
  4. Transférez (à l'aide d'un service de signalisation) la réponse au pair distant.
  5. Enregistrez un écouteur pour les événements icecandidate sur RTCPeerConnection .
  6. Pour chaque événement de icecandidate , transférez-le (à l'aide d'un service de signalisation) vers l'homologue distant.
  7. Attendez les candidats ICE distants entrants du service de signalisation et ajoutez-les à l'aide de RTCPeerConnection.addIceCandidate()

Le défi de cette API est que la plupart de ces opérations sont asynchrones, ce qui complique souvent l'implémentation réelle d'une application WebRTC. De nombreuses fonctions renvoient une Promise qui doit être résolue avant que l'étape suivante du processus puisse continuer.

Il est recommandé que lors de l'implémentation d'une application utilisant cette API, le développeur utilise async et await au lieu d'enregistrer des écouteurs (en utilisant Promise.then() ), car cela rend votre code plus facile à suivre. Prenons l'exemple suivant:

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

Lors de l'écriture du code ci-dessus en utilisant async et await , nous obtenons ce qui suit:

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