وتلتزم جوجل لدفع الأسهم العنصري للمجتمعات الأسود. أنظر كيف.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

اتصالات النظير

و RTCPeerConnection هو واجهة مركزية في API يتطلب WebRTC. وهو يمثل العلاقة بين الأقران المحلية والبعيدة، وبمعاقبة كل وظيفة والفعاليات اللازمة لتأسيس الاتصال.

تأسيس اتصال الأقران

سوف التطبيقات تنفيذ ظيفة WebRTC عادة تعتمد بشكل كبير على RTCPeerConnection اجهة. من جانب المتصلين (وهذا هو، والأقران الشروع في الاتصال)، وعملية تأسيس اتصال عادة ما يلي:

  1. إنشاء جديد RTCPeerConnection المثال مع التكوين ICE المناسب.
  2. إنشاء وصفا SDP المحلي باستخدام RTCPeerConnection.createOffer() .
  3. تعيين وصف SDP المحلي باستخدام RTCPeerConnection.setLocalDescription() .
  4. نقل (باستخدام خدمة إشارات) وصف SDP المحلي إلى النظير البعيد.
  5. تسجيل المستمع ل icecandidate الأحداث على RTCPeerConnection .
  6. لكل icecandidate الأحداث، ونقل ذلك (باستخدام خدمة يشير) إلى النظير البعيد.
  7. الانتظار للحصول على وصف SDP عن بعد الواردة من الخدمة الإشارات وضعه باستخدام RTCPeerConnection.setRemoteDescription() .
  8. انتظر المرشحين ICE عن بعد الواردة من الخدمة الإشارات وإضافتها باستخدام RTCPeerConnection.addIceCandidate()

على الجانب المستدعي، والعملية هي مختلفة قليلا.

  1. إنشاء جديد RTCPeerConnection المثال مع التكوين ICE المناسب.
  2. الانتظار للحصول على وصف SDP عن بعد الواردة من الخدمة الإشارات وضعه باستخدام RTCPeerConnection.setRemoteDescription() .
  3. إنشاء جوابا لوصف SDP عن بعد عن طريق الاتصال RTCPeerConnection.createAnswer() .
  4. نقل (باستخدام خدمة إشارات) الجواب على النظير البعيد.
  5. تسجيل المستمع ل icecandidate الأحداث على RTCPeerConnection .
  6. لكل icecandidate الأحداث، ونقل ذلك (باستخدام خدمة يشير) إلى النظير البعيد.
  7. انتظر المرشحين ICE عن بعد الواردة من الخدمة الإشارات وإضافتها باستخدام RTCPeerConnection.addIceCandidate()

التحدي مع هذا API هو أن معظم هذه العمليات غير متزامن، والتي غالبا ما تجعل التنفيذ الفعلي لتطبيق يتطلب WebRTC معقدة. العديد من الوظائف إرجاع Promise التي لابد من حلها قبل الخطوة التالية في العملية يمكن أن تستمر.

فمن المستحسن أن عند تنفيذ تطبيق باستخدام هذا API، المطور جعل استخدام async و await بدلا من التسجيل المستمعين (باستخدام Promise.then() )، وهذا يجعل التعليمات البرمجية أكثر سهولة لمتابعة. النظر في المثال التالي:

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

عند كتابة التعليمات البرمجية أعلاه باستخدام async و await ، وحصلنا على ما يلي:

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