गूगल काले समुदायों के लिए जातीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

सहकर्मी कनेक्शन के साथ आरंभ करना

सहकर्मी कनेक्शन WebRTC विनिर्देशों की बात यह है कि विभिन्न कंप्यूटरों पर दो आवेदनों को जोड़ने से संबंधित एक सहकर्मी से सहकर्मी प्रोटोकॉल का उपयोग बातचीत करने के लिए है। साथियों के बीच संचार वीडियो, ऑडियो या मनमाने ढंग बाइनरी डेटा (समर्थन ग्राहकों के लिए किया जा सकता है RTCDataChannel एपीआई)। आदेश कैसे दो साथियों कनेक्ट कर सकते हैं की खोज करने के लिए, दोनों ग्राहक एक बर्फ सर्वर विन्यास प्रदान करने के लिए की जरूरत है। यह या तो एक STUN या एक बारी सर्वर है, और उनकी भूमिका प्रत्येक ग्राहक जो तब दूरस्थ सहकर्मी को स्थानांतरित कर रहा है करने के लिए बर्फ उम्मीदवारों प्रदान करना है। बर्फ उम्मीदवारों के स्थानांतरित यह आमतौर पर संकेतन कहा जाता है।

सिग्नलिंग

WebRTC विनिर्देश एक बर्फ (इंटरनेट कनेक्टिविटी स्थापना) सर्वर के साथ संचार करने के लिए एपीआई शामिल है, लेकिन संकेत घटक इसका हिस्सा नहीं है। सिग्नलिंग साझा करने के लिए दो साथियों के क्रम में की जरूरत है कि वे किस तरह कनेक्ट होना चाहिए। आम तौर पर इस एक नियमित HTTP आधारित वेब एपीआई के माध्यम से हल किया जाता है (यानी, एक बाकी सेवा या अन्य आरपीसी तंत्र) जहां वेब अनुप्रयोगों सहकर्मी कनेक्शन से पहले आवश्यक जानकारी रिले कर सकते हैं शुरू किया जाता है।

अनुवर्ती कोड से पता चलता है कि कैसे इस काल्पनिक संकेतन सेवा भेजने के लिए इस्तेमाल किया जा सकता और अतुल्यकालिक रूप से संदेश प्राप्त झलकी। यह इस गाइड में शेष उदाहरण हैं, जहां आवश्यक में इस्तेमाल किया जाएगा।

 // Set up an asynchronous communication channel that will be
// used during the peer connection setup
const signalingChannel = new SignalingChannel(remoteClientId);
signalingChannel.addEventListener('message', message => {
    // New message from remote client received
});

// Send an asynchronous message to the remote client
signalingChannel.send('Hello!');
 

सिग्नलिंग कई अलग अलग तरीकों से लागू किया जा सकता है, और WebRTC विनिर्देश किसी भी विशिष्ट समाधान पसंद नहीं करता है।

सहकर्मी कनेक्शन की शुरुआत

प्रत्येक सहकर्मी कनेक्शन एक द्वारा नियंत्रित किया जाता RTCPeerConnection वस्तु। इस वर्ग के लिए निर्माता एक भी लेता है RTCConfiguration अपने पैरामीटर के रूप में वस्तु। इस वस्तु साथियों के संबंध की स्थापना की है और प्रयोग करने में बर्फ सर्वर के बारे में जानकारी शामिल करना चाहिए परिभाषित करता है।

एक बार जब RTCPeerConnection बनाई गई है हम अगर हम सहकर्मी बुला रहे हैं या सहकर्मी प्राप्त करने पर निर्भर करता है, एक एसडीपी प्रस्ताव या उत्तर बनाने के लिए की जरूरत है। एक बार जब एसडीपी प्रस्ताव या जवाब बनाई गई है, यह एक अलग चैनल के माध्यम से दूरस्थ सहकर्मी को भेजा जाना चाहिए। पासिंग एसडीपी दूरदराज के साथियों संकेत कहा जाता है करने के लिए वस्तुओं और WebRTC विनिर्देश में शामिल नहीं है।

बुला ओर से सहकर्मी कनेक्शन सेटअप आरंभ करने के लिए, हम एक बनाने RTCPeerConnection वस्तु और फिर फोन createOffer() एक बनाने के लिए RTCSessionDescription वस्तु। इस सत्र में वर्णन का उपयोग कर स्थानीय वर्णन के रूप में सेट कर दिया जाता setLocalDescription() और उसके बाद प्राप्त ओर करने के लिए हमारे संकेतन चैनल के द्वारा भेजा जाता है। हम यह भी हमारी पेशकश की सत्र वर्णन करने के लिए एक जवाब प्राप्त की ओर से प्राप्त होने के लिए हमारे संकेतन चैनल के लिए एक श्रोता की स्थापना की।

 async function makeCall() {
    const configuration = {'iceServers': [{'urls': 'stun:stun.l.google.com:19302'}]}
    const peerConnection = new RTCPeerConnection(configuration);
    signalingChannel.addEventListener('message', async message => {
        if (message.answer) {
            const remoteDesc = new RTCSessionDescription(message.answer);
            await peerConnection.setRemoteDescription(remoteDesc);
        }
    });
    const offer = await peerConnection.createOffer();
    await peerConnection.setLocalDescription(offer);
    signalingChannel.send({'offer': offer});
}
 

प्राप्त ओर, हम इससे पहले कि हम हमारे द्वारा बनाया जाने वाला भेजे प्रस्ताव के लिए प्रतीक्षा RTCPeerConnection उदाहरण। एक बार यह हो जाता है हम प्रयोग कर प्राप्त प्रस्ताव सेट setRemoteDescription() इसके बाद, हम फोन createAnswer() प्राप्त प्रस्ताव का जवाब बनाने के लिए। इस उत्तर का उपयोग कर स्थानीय वर्णन के रूप में सेट कर दिया जाता setLocalDescription() और फिर हमारे संकेतन सर्वर पर बुला ओर करने के लिए भेजा है।

 const peerConnection = new RTCPeerConnection(configuration);
signalingChannel.addEventListener('message', async message => {
    if (message.offer) {
        peerConnection.setRemoteDescription(new RTCSessionDescription(message.offer));
        const answer = await peerConnection.createAnswer();
        await peerConnection.setLocalDescription(answer);
        signalingChannel.send({'answer': answer});
    }
});
 

एक बार दो साथियों को स्थानीय और रिमोट सत्र विवरण निर्धारित किया है वे दूरदराज के सहकर्मी की क्षमताओं का पता है। इसका मतलब यह नहीं है कि साथियों के बीच संबंध के लिए तैयार है। इस कार्य के लिए हम अन्य साथियों के लिए प्रत्येक सहकर्मी और हस्तांतरण (संकेतन चैनल पर) पर बर्फ उम्मीदवारों को इकट्ठा करने की जरूरत है।

बर्फ उम्मीदवारों

इससे पहले दो साथियों WebRTC का उपयोग कर communitcate सकते हैं, वे विनिमय कनेक्टिविटी जानकारी की जरूरत है। के बाद से नेटवर्क शर्तों कारकों की एक संख्या पर dependning भिन्न हो सकते हैं, एक बाहरी सेवा आमतौर पर एक सहकर्मी को जोड़ने के लिए संभव उम्मीदवारों की खोज के लिए प्रयोग किया जाता है। यह सेवा बर्फ कहा जाता है और या तो एक STUN या एक मोड़ सर्वर का उपयोग कर रहा है। STUN नेट के लिए सत्र Traversal उपयोगिताएँ के लिए खड़ा है, और आमतौर पर सबसे WebRTC अनुप्रयोगों में परोक्ष रूप से प्रयोग किया जाता है।

बारी (Traversal रिले नेट का उपयोग करना) और अधिक उन्नत समाधान को शामिल किया गया है कि STUN प्रोटोकॉल और सबसे वाणिज्यिक WebRTC आधारित सेवाओं साथियों के बीच कनेक्शन की स्थापना के लिए एक मोड़ सर्वर का उपयोग है। WebRTC API दोनों STUN समर्थन करता है और सीधे बारी है, और इसे और अधिक पूरा अवधि इंटरनेट कनेक्टिविटी स्थापना के तहत एकत्र की जाती है। जब एक WebRTC संबंध बनाने, हम आम तौर पर के लिए विन्यास में एक या कई बर्फ सर्वर प्रदान RTCPeerConnection वस्तु।

मिलने बर्फ

एक बार एक RTCPeerConnection वस्तु बन जाता है, अंतर्निहित ढांचा प्रदान बर्फ सर्वर का उपयोग करता कनेक्टिविटी स्थापना (आईसीई उम्मीदवारों) के लिए उम्मीदवारों इकट्ठा करने के लिए। घटना icegatheringstatechange पर RTCPeerConnection क्या राज्य बर्फ सभा है में संकेतों ( new , gathering या complete )।

हालांकि यह संभव है एक सहकर्मी प्रतीक्षा करने के लिए जब तक बर्फ सभा पूरा हो गया है, यह आमतौर पर एक "मिलने बर्फ" तकनीक का उपयोग करें और दूरदराज के साथियों के लिए प्रत्येक बर्फ उम्मीदवार संचारित के रूप में यह पता चला हो जाता है करने के लिए और अधिक कुशल है। यह महत्वपूर्ण साथी कनेक्टिविटी के लिए सेटअप समय को कम करने और एक वीडियो कॉल कम देरी के साथ आरंभ करने के लिए अनुमति देगा।

बर्फ उम्मीदवारों को इकट्ठा करने के लिए बस के लिए एक श्रोता जोड़ने icecandidate घटना। RTCPeerConnectionIceEvent कि श्रोता पर उत्सर्जित शामिल होंगे candidate संपत्ति है कि एक नए उम्मीदवार कि दूरदराज के पीयर (सिग्नलिंग देखें) को भेजा जाना चाहिए प्रतिनिधित्व करता है।

 // Listen for local ICE candidates on the local RTCPeerConnection
peerConnection.addEventListener('icecandidate', event => {
    if (event.candidate) {
        signalingChannel.send({'new-ice-candidate': event.candidate});
    }
});

// Listen for remote ICE candidates and add them to the local RTCPeerConnection
signalingChannel.addEventListener('message', async message => {
    if (message.iceCandidate) {
        try {
            await peerConnection.addIceCandidate(message.iceCandidate);
        } catch (e) {
            console.error('Error adding received ice candidate', e);
        }
    }
});
 

कनेक्शन स्थापित

एक बार जब बर्फ उम्मीदवारों प्राप्त किया जा रहा है, हम अपने साथियों के कनेक्शन के लिए राज्य अंततः एक जुड़ा राज्य के लिए बदल जाएगा उम्मीद करनी चाहिए। इस का पता लगाने के लिए, हम अपने को एक श्रोता जोड़ने RTCPeerConnection जहां हम के लिए सुनने connectionstatechange घटनाओं।

 // Listen for connectionstatechange on the local RTCPeerConnection
peerConnection.addEventListener('connectionstatechange', event => {
    if (peerConnection.connectionState === 'connected') {
        // Peers connected!
    }
});
 

RTCPeerConnection API दस्तावेज़