Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Connessioni peer

RTCPeerConnection è l'interfaccia centrale nell'API WebRTC. Rappresenta la connessione tra il peer locale e remoto e fornisce tutte le funzioni e gli eventi necessari per stabilire la connessione.

Stabilire una connessione peer

Le applicazioni che implementano la funzionalità WebRTC di solito dipendono fortemente dall'interfaccia RTCPeerConnection . Dal lato dei chiamanti (ovvero, il peer che avvia una connessione), il processo per stabilire una connessione è in genere il seguente:

  1. Creare una nuova istanza RTCPeerConnection con la configurazione ICE appropriata.
  2. Creare una descrizione SDP locale utilizzando RTCPeerConnection.createOffer() .
  3. Impostare la descrizione SDP locale utilizzando RTCPeerConnection.setLocalDescription() .
  4. Trasferire (usando un servizio di segnalazione) la descrizione SDP locale al peer remoto.
  5. Registrare un listener per eventi icecandidate su RTCPeerConnection .
  6. Per ogni evento icecandidate , trasferirlo (utilizzando un servizio di segnalazione) al peer remoto.
  7. Attendere una descrizione SDP remota in entrata dal servizio di segnalazione e impostarla utilizzando RTCPeerConnection.setRemoteDescription() .
  8. Attendere i candidati ICE remoti in arrivo dal servizio di segnalazione e aggiungerli utilizzando RTCPeerConnection.addIceCandidate()

Dal lato della chiamata, il processo è leggermente diverso.

  1. Creare una nuova istanza RTCPeerConnection con la configurazione ICE appropriata.
  2. Attendere una descrizione SDP remota in entrata dal servizio di segnalazione e impostarla utilizzando RTCPeerConnection.setRemoteDescription() .
  3. Creare una risposta per la descrizione SDP remota chiamando RTCPeerConnection.createAnswer() .
  4. Trasferisci (usando un servizio di segnalazione) la risposta al peer remoto.
  5. Registrare un listener per eventi icecandidate su RTCPeerConnection .
  6. Per ogni evento icecandidate , trasferiscilo (usando un servizio di segnalazione) al peer remoto.
  7. Attendere i candidati ICE remoti in arrivo dal servizio di segnalazione e aggiungerli utilizzando RTCPeerConnection.addIceCandidate()

La sfida con questa API è che la maggior parte di queste operazioni sono asincrone, il che rende spesso complicata l'implementazione effettiva di un'applicazione WebRTC. Molte funzioni restituiscono una Promise che deve essere risolta prima che il passaggio successivo del processo possa continuare.

Durante l'implementazione di un'applicazione che utilizza questa API, si consiglia allo sviluppatore di utilizzare async e await invece di registrare i listener (utilizzando Promise.then() ), poiché ciò rende il codice più facile da seguire. Considera il seguente esempio:

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

Quando scriviamo il codice sopra usando async e await , otteniamo quanto segue:

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