Google est engagé à faire progresser l'équité raciale pour les communautés noires. Regarde comment.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

connexions par les pairs

Le RTCPeerConnection est l'interface centrale dans l'API WebRTC. Il représente la connexion entre le poste local et à distance, et provice toutes les fonctions et les événements nécessaires pour établir la connexion.

L'établissement d'une connexion par les pairs

Les demandes de mise en œuvre des fonctionnalités WebRTC compteront généralement en grande partie sur la RTCPeerConnection interface. Du côté de l'appelant (qui est, le lancement d'une connexion peer), le procédé pour établir une connexion est généralement le suivant:

  1. Créer une nouvelle RTCPeerConnection instance avec la configuration ICE appropriée.
  2. Créer une description SDP local en utilisant RTCPeerConnection.createOffer() .
  3. Définir la description SDP local en utilisant RTCPeerConnection.setLocalDescription() .
  4. Transfert (en utilisant un service de signalisation) la description SDP local à l'homologue distant.
  5. Enregistrer un écouteur pour icecandidate événements sur le RTCPeerConnection .
  6. Pour chaque icecandidate événements, le transfert ( à l' aide d' un service de signalisation) à l'homologue distant.
  7. Attendez une description SDP à distance entrant du service de signalisation et de définir à l'aide RTCPeerConnection.setRemoteDescription() .
  8. Attendez que les candidats ICE à distance entrants du service de signalisation et les ajouter à l' aide RTCPeerConnection.addIceCandidate()

Du côté de la callee, le processus est un peu différent.

  1. Créer une nouvelle RTCPeerConnection instance avec la configuration ICE appropriée.
  2. Attendez une description SDP à distance entrant du service de signalisation et de définir à l'aide RTCPeerConnection.setRemoteDescription() .
  3. Créer une réponse pour la description SDP à distance en appelant RTCPeerConnection.createAnswer() .
  4. Transfert (en utilisant un service de signalisation), la réponse à l'homologue distant.
  5. Enregistrer un écouteur pour icecandidate événements sur le RTCPeerConnection .
  6. Pour chaque icecandidate événements, le transfert ( à l' aide d' un service de signalisation) à l'homologue distant.
  7. Attendez que les candidats ICE à distance entrants du service de signalisation et les ajouter à l' aide RTCPeerConnection.addIceCandidate()

Le défi avec cette API est que la plupart de ces opérations sont asynchrones, ce qui rend souvent la mise en œuvre effective d'une application WebRTC compliquée. La plupart des fonctions renvoient une Promise qui doit être résolue avant l'étape suivante du processus peut se poursuivre.

Il est recommandé que la mise en œuvre d' une application utilisant cette API, l'utilisation de marque de développeur de async et await au lieu d'enregistrer les auditeurs ( en utilisant Promise.then() ), car cela rend plus facile votre code à 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 les éléments suivants:

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