Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי 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 , 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 , 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
    });
}