גוגל מחוייב לקידום עצמי גזעי עבור קהילות שחורות. תראה איך.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

חיבורי פאר

RTCPeerConnection הוא הממשק המרכזי API WebRTC. הוא מייצג את החיבור בין עמיתים מקומיים ומרוחקים, ו provice כל פונקציה ואירועים הכרחי כדי ליצור את החיבור.

יצירת חיבור peer

יישומים יישום פונקציונליות של 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. צור תשובה לתיאור 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
    });
}