Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

اتصالات همتا

RTCPeerConnection رابط مرکزی در WebRTC API است. این ارتباط بین همسالان محلی و از راه دور را نشان می دهد و تمام عملکردها و رویدادهای لازم برای ایجاد ارتباط را تحریک می کند.

برقراری ارتباط همتا

برنامه های کاربردی اجرای 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()

در سمت callee ، روند کمی متفاوت است.

  1. یک نمونه جدید RTCPeerConnection با پیکربندی ICE مناسب ایجاد کنید.
  2. منتظر توضیحات SDP از راه دور ورودی از خدمات سیگنالینگ باشید و آن را با استفاده از RTCPeerConnection.setRemoteDescription() تنظیم کنید.
  3. با تماس با RTCPeerConnection.createAnswer() پاسخی برای توصیف SDP از راه دور ایجاد کنید.
  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
    });
}