मिलते-जुलते ऐप्लिकेशन

RTCPeerConnection, WebRTC API का मुख्य इंटरफ़ेस है. यह लोकल और रिमोट पीयर के बीच के कनेक्शन को दिखाता है. साथ ही, कनेक्शन बनाने के लिए ज़रूरी सभी फ़ंक्शन और इवेंट को दिखाता है.

मिलते-जुलते ऐप्लिकेशन से कनेक्ट करना

WebRTC फ़ंक्शन लागू करने वाले ऐप्लिकेशन आम तौर पर RTCPeerConnection इंटरफ़ेस पर बहुत ज़्यादा निर्भर रहते हैं. कॉल करने वाले (कॉलर) का मतलब है कि मिलते-जुलते ऐप्लिकेशन (जिसका संबंध है कनेक्शन से)

  1. सही ICE कॉन्फ़िगरेशन वाला एक नया RTCPeerConnection इंस्टेंस बनाएं.
  2. RTCPeerConnection.createOffer() का इस्तेमाल करके, लोकल एसडीपी (SPP) जानकारी बनाएं.
  3. लोकल एसडीपी के बारे में जानकारी देने के लिए, RTCPeerConnection.setLocalDescription() का इस्तेमाल करें.
  4. ( सिग्नलिंग सेवा का इस्तेमाल करके) रिमोट एसडीपी (SPP) की जानकारी रिमोट पीयर को ट्रांसफ़र करें.
  5. RTCPeerConnection पर icecandidate इवेंट के लिए, लिसनर रजिस्टर करें.
  6. हर icecandidate इवेंट के लिए, इसे किसी सिग्नलिंग सेवा का इस्तेमाल करके रिमोट सिग्नल पर ट्रांसफ़र करें.
  7. सिग्नलिंग सेवा से आने वाले दूरस्थ SDP विवरण की प्रतीक्षा करें और RTCPeerConnection.setRemoteDescription() का उपयोग करके उसे सेट करें.
  8. सिग्नलिंग सेवा से इनकमिंग ICE उम्मीदवारों के आने का इंतज़ार करें और RTCPeerConnection.addIceCandidate() का इस्तेमाल करके उन्हें जोड़ें

कॉली साइड पर यह प्रोसेस थोड़ी अलग है.

  1. सही ICE कॉन्फ़िगरेशन वाला एक नया RTCPeerConnection इंस्टेंस बनाएं.
  2. सिग्नलिंग सेवा से आने वाले दूरस्थ SDP विवरण की प्रतीक्षा करें और RTCPeerConnection.setRemoteDescription() का उपयोग करके उसे सेट करें.
  3. कॉल करने के लिए, RTCPeerConnection.createAnswer() को रिमोट तरीके से एसडीपी (IdP) ब्यौरे में जवाब दें.
  4. रिमोट सिग्नल का जवाब, ट्रांसफ़र करने वाले सिग्नल का इस्तेमाल करके दें.
  5. RTCPeerConnection पर icecandidate इवेंट के लिए, लिसनर रजिस्टर करें.
  6. हर icecandidate इवेंट के लिए, इसे किसी सिग्नलिंग सेवा का इस्तेमाल करके रिमोट सिग्नल पर ट्रांसफ़र करें.
  7. सिग्नलिंग सेवा से इनकमिंग ICE उम्मीदवारों के आने का इंतज़ार करें और RTCPeerConnection.addIceCandidate() का इस्तेमाल करके उन्हें जोड़ें

इस एपीआई के साथ चुनौती यह है कि इनमें से ज़्यादातर कार्रवाइयां एसिंक्रोनस हैं, क्योंकि अक्सर WebRTC ऐप्लिकेशन को लागू करना मुश्किल होता है. कई फ़ंक्शन, Promise दिखाते हैं जिन्हें प्रोसेस के अगले चरण से पहले हल करना होता है.

यह सुझाव दिया जाता है कि इस एपीआई का इस्तेमाल करके ऐप्लिकेशन लागू करते समय, डेवलपर सुनने वालों को रजिस्टर करने के बजाय, 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
    });
}