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. สร้างคำตอบสำหรับคำอธิบาย 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
    });
}