RTCPeerConnection
, WebRTC API का मुख्य इंटरफ़ेस है. यह
स्थानीय और दूर-दराज़ के सहकर्मी के बीच के संबंध का प्रतिनिधित्व करता है. साथ ही,
फ़ंक्शन और इवेंट की जानकारी देता है.
मिलते-जुलते ऐप्लिकेशन के साथ कनेक्शन बनाया जा रहा है
WebRTC फ़ंक्शन को लागू करने वाले ऐप्लिकेशन के लिए, आम तौर पर
RTCPeerConnection
इंटरफ़ेस. कॉलर की ओर से (यानी, पीयर
कनेक्शन शुरू करने की प्रोसेस शुरू की जाती है), तो कनेक्शन बनाने की प्रोसेस आम तौर पर
फ़ॉलो किया जा रहा है:
- सही ICE के साथ नया
RTCPeerConnection
इंस्टेंस बनाएं कॉन्फ़िगरेशन. RTCPeerConnection.createOffer()
का इस्तेमाल करके, स्थानीय एसडीपी में जानकारी बनाएं.- स्थानीय एसडीपी की जानकारी सेट करने के लिए, इसका इस्तेमाल करें
RTCPeerConnection.setLocalDescription()
. - स्थानीय एसडीपी की जानकारी को रिमोट पर ट्रांसफ़र (सिग्नल करने वाली सेवा की मदद से) करें मिलते-जुलते ऐप्लिकेशन.
RTCPeerConnection
परicecandidate
इवेंट के लिए, एक लिसनर रजिस्टर करें.- हर
icecandidate
इवेंट के लिए, इसे (सिग्नल सेवा का इस्तेमाल करके) इस पर ट्रांसफ़र करें हम साथ मिलकर काम करने में मदद कर रहे हैं. - सिग्नलिंग सेवा से आने वाले रिमोट एसडीपी के ब्यौरे का इंतज़ार करें और
RTCPeerConnection.setRemoteDescription()
का इस्तेमाल करके इसे सेट करें. - सिग्नलिंग सेवा से रिमोट ICE उम्मीदवारों के आने का इंतज़ार करें और जोड़ें
वे
RTCPeerConnection.addIceCandidate()
का इस्तेमाल कर रहे हैं
कॉली पक्ष के मामले में, यह प्रोसेस थोड़ी अलग होती है.
- सही ICE के साथ नया
RTCPeerConnection
इंस्टेंस बनाएं कॉन्फ़िगरेशन. - सिग्नलिंग सेवा से आने वाले रिमोट एसडीपी के ब्यौरे का इंतज़ार करें और
RTCPeerConnection.setRemoteDescription()
का इस्तेमाल करके इसे सेट करें. - कॉल करके रिमोट एसडीपी के ब्यौरे के लिए जवाब तैयार करें
RTCPeerConnection.createAnswer()
. - सिग्नल करने वाली सेवा का इस्तेमाल करके, रिमोट सहकर्मी को जवाब ट्रांसफ़र करें.
RTCPeerConnection
परicecandidate
इवेंट के लिए, एक लिसनर रजिस्टर करें.- हर
icecandidate
इवेंट के लिए, इसे (सिग्नल सेवा का इस्तेमाल करके) इस पर ट्रांसफ़र करें हम साथ मिलकर काम करने में मदद कर रहे हैं. - सिग्नलिंग सेवा से रिमोट 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
});
}