Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Akran bağlantıları

RTCPeerConnection , WebRTC API'sindeki merkezi arabirimdir. Yerel ve uzak eş arasındaki bağlantıyı temsil eder ve bağlantı kurmak için gerekli tüm işlev ve olayları kanıtlar.

Akran bağlantısı kurma

WebRTC işlevini uygulayan uygulamalar genellikle RTCPeerConnection arabirimine dayanır. Arayanlar tarafında (yani, bir bağlantı başlatan akran), bir bağlantı kurma süreci genellikle aşağıdaki gibidir:

  1. Uygun ICE yapılandırmasıyla yeni bir RTCPeerConnection örneği oluşturun.
  2. RTCPeerConnection.createOffer() kullanarak yerel bir SDP açıklaması oluşturun.
  3. RTCPeerConnection.setLocalDescription() kullanarak yerel SDP açıklamasını ayarlayın.
  4. Yerel SDP açıklamasını uzaktaki eşe aktarın (bir sinyal servisi kullanarak).
  5. RTCPeerConnection icecandidate olayları için bir dinleyici icecandidate .
  6. Her icecandidate olayı için (bir sinyal servisi kullanarak) uzak eşe aktarın.
  7. Sinyalizasyon hizmetinden gelen bir uzak SDP açıklamasını bekleyin ve RTCPeerConnection.setRemoteDescription() kullanarak ayarlayın.
  8. Sinyal gönderme hizmetinden gelen uzak ICE adaylarını bekleyin ve RTCPeerConnection.addIceCandidate() kullanarak ekleyin

Callee tarafında, süreç biraz farklıdır.

  1. Uygun ICE yapılandırmasıyla yeni bir RTCPeerConnection örneği oluşturun.
  2. Sinyalizasyon hizmetinden gelen bir uzak SDP açıklamasını bekleyin ve RTCPeerConnection.setRemoteDescription() kullanarak ayarlayın.
  3. RTCPeerConnection.createAnswer() çağırarak uzak SDP açıklaması için bir yanıt oluşturun.
  4. Cevabı uzak eşe aktarın (bir sinyal servisi kullanarak).
  5. RTCPeerConnection icecandidate olayları için bir dinleyici icecandidate .
  6. Her icecandidate olayı için (bir sinyal servisi kullanarak) uzak eşe aktarın.
  7. Sinyal gönderme hizmetinden gelen uzak ICE adaylarını bekleyin ve RTCPeerConnection.addIceCandidate() kullanarak ekleyin

Bu API ile ilgili zorluk, bu işlemlerin çoğunun eşzamansız olmasıdır, bu da genellikle bir WebRTC uygulamasının gerçek uygulamasını karmaşık hale getirir. İşlevlerin çoğu, işlemin bir sonraki adımı devam etmeden önce çözülmesi gereken bir Promise verir.

Bu API, geliştirici yapmak kullanımını kullanarak uygulama uygularken önerilir async ve await yerine dinleyicileri kaydetme (kullanarak Promise.then() bu daha kolay kodunuzu yapar gibi), takip etmek. Aşağıdaki örneği düşünün:

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

Yukarıdaki kodu zaman async ve await kullanarak yazarken aşağıdakileri elde ederiz:

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