Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Peer-Verbindungen

Die RTCPeerConnection ist die zentrale Schnittstelle in der WebRTC-API. Es stellt die Verbindung zwischen dem lokalen und dem Remote-Peer dar und bietet alle Funktionen und Ereignisse, die zum Herstellen der Verbindung erforderlich sind.

Herstellen einer Peer-Verbindung

Anwendungen, die WebRTC-Funktionen implementieren, sind normalerweise stark von der RTCPeerConnection Schnittstelle RTCPeerConnection . Auf der Anruferseite (dh dem Peer, der eine Verbindung initiiert) ist der Prozess zum Herstellen einer Verbindung normalerweise der folgende:

  1. Erstellen Sie eine neue RTCPeerConnection Instanz mit der entsprechenden ICE-Konfiguration.
  2. Erstellen Sie eine lokale SDP-Beschreibung mit RTCPeerConnection.createOffer() .
  3. RTCPeerConnection.setLocalDescription() Sie die lokale SDP-Beschreibung mit RTCPeerConnection.setLocalDescription() .
  4. Übertragen Sie (mithilfe eines Signalisierungsdienstes) die lokale SDP-Beschreibung an den Remote-Peer.
  5. Registrieren Sie einen Listener für icecandidate auf der RTCPeerConnection .
  6. Übertragen Sie jedes icecandidate (mithilfe eines Signalisierungsdienstes) an den Remote-Peer.
  7. Warten Sie auf eine eingehende Remote-SDP-Beschreibung vom Signalisierungsdienst und legen Sie sie mit RTCPeerConnection.setRemoteDescription() .
  8. Warten Sie auf eingehende Remote-ICE-Kandidaten vom Signalisierungsdienst und fügen Sie sie mit RTCPeerConnection.addIceCandidate()

Auf der Angerufenen Seite ist der Prozess etwas anders.

  1. Erstellen Sie eine neue RTCPeerConnection Instanz mit der entsprechenden ICE-Konfiguration.
  2. Warten Sie auf eine eingehende Remote-SDP-Beschreibung vom Signalisierungsdienst und legen Sie sie mit RTCPeerConnection.setRemoteDescription() .
  3. Erstellen Sie eine Antwort auf die Remote-SDP-Beschreibung, indem Sie RTCPeerConnection.createAnswer() aufrufen.
  4. Übertragen Sie die Antwort (mithilfe eines Signalisierungsdienstes) an den Remote-Peer.
  5. Registrieren Sie einen Listener für icecandidate auf der RTCPeerConnection .
  6. Übertragen Sie jedes icecandidate (mithilfe eines Signalisierungsdienstes) an den Remote-Peer.
  7. Warten Sie auf eingehende Remote-ICE-Kandidaten vom Signalisierungsdienst und fügen Sie sie mit RTCPeerConnection.addIceCandidate()

Die Herausforderung bei dieser API besteht darin, dass die meisten dieser Vorgänge asynchron sind, was die eigentliche Implementierung einer WebRTC-Anwendung häufig kompliziert macht. Viele der Funktionen geben ein Promise das gelöst werden muss, bevor der nächste Schritt im Prozess fortgesetzt werden kann.

Es wird empfohlen, dass der Entwickler bei der Implementierung einer Anwendung mit dieser API Promise.then() async und await anstatt Listener zu registrieren (mithilfe von Promise.then() ), da dies das Promise.then() Ihres Codes erleichtert. Betrachten Sie das folgende Beispiel:

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

Wenn Sie den obigen Code mit async schreiben und await , erhalten wir Folgendes:

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