मैं वेबआरटीसी का उपयोग कर पीयर कनेक्शन एप्लिकेशन में अपना पहला सहकर्मी लिख रहा हूं, और मेरे कोड को सहकर्मी से बर्फ उम्मीदवार से अनुरोध करने के लिए, जो मैं सॉकेट.ओ कनेक्शन पर भेजता हूं, एक बार के बजाय 6 बार ट्रिगर कर रहा है।मेरा बर्फ उम्मीदवार अनुरोध 1 के बजाय 6 बार फायरिंग क्यों कर रहा है?
यह वास्तव में भ्रमित है क्योंकि अगर मैंने गलती से एक बड़ा अनुरोध लूप तैयार किया था, तो मैं केवल 6 (8 onicecandidate
घटनाओं) के असीमित रिकर्सन की अपेक्षा करता हूं। तो क्या कोई मुझे बता सकता है कि फॉलो कोड ने 6 रिकर्सन क्यों किए?
यहाँ संदेश हैंडलर है, यह बस वाक्य रचना के द्वारा नियंत्रित एक socket.io संदेश भेजता है: Muveoo.Messenger.input('ice candidate request', data);
'ice candidate request' : function(data) {
console.log('Debug 10: Requesting Ice Candidate');
socket.emit('ice candidate request', data);
},
और यहाँ कोड है कि बर्फ उम्मीदवार अनुरोध हैंडल, न पर if
तर्क द्वारा भी भ्रमित हो रहा है बहुत ऊपर, यूआईडी यह तय करने के लिए कि प्रत्येक ग्राहक को शुरुआत में कौन सा प्रस्ताव देना चाहिए, केवल एक अद्वितीय आईडी है।
[Debug A]: Offering Connection
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
rtc.js:101 [Debug A]: Sending Ice Candidate Request.
messenger.js:91 Debug 10: Requesting Ice Candidate
rtc.js:94 [Debug A]: onicecandidate Event Triggered.
क्यों मेरी आइस उम्मीदवार अनुरोध फायरिंग कर रहा है 6 के बजाय बार 1:
if (Muveoo.RTC.connectedPeers[id].dataChannels[name].UID < Muveoo.RTC.connectedPeers[id].dataChannels[name].peerUID) {
Muveoo.RTC.connectedPeers[id].dataChannels[name].offerConnection(function() {
console.log('[Debug A]: Offering Connection');
Muveoo.RTC.connectedPeers[id].dataChannels[name].pc.onicecandidate = function(evt) {
console.log('[Debug A]: onicecandidate Event Triggered.');
if (evt.candidate) {
console.log('[Debug A]: Sending Ice Candidate Request.');
Muveoo.Messenger.input('ice candidate request', {
target : id,
candidate : evt.candidate,
channel : name
});
}
};
Muveoo.RTC.connectedPeers[id].dataChannels[name].pc.ondatachannel = function(evt) {
console.log('got data channel');
Muveoo.RTC.connectedPeers[id].dataChannels[name] = evt.channel;
Muveoo.RTC.connectedPeers[id].dataChannels[name].channel.onmessage = function(evt1) {
handleMessage(evt1.data);
};
Muveoo.RTC.connectedPeers[id].dataChannels[name].channel.message = function(msg) {
Muveoo.RTC.connectedPeers[id].dataChannels[name].channel.send(JSON.stringify(msg));
};
};
socket.on('session description', function(data) {
console.log('Debug 12: Session Description Received');
Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].desc = new Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].sessionDescription(msg.desc);
Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].pc.setRemoteDescription(Muveoo.RTC.connectedPeers[data.target].dataChannels[data.name].desc);
if (Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].UID > Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].peerUID) {
/*They sent the sessionDescription first, so need an answer*/
Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].pc.createAnswer(function(answer) {
/*The answer is this side's local description*/
Muveoo.RTC.connectedPeers[data.target].dataChannels[data.channel].pc.setLocalDescription(answer);
var data = {
target : data.target,
description : answer,
channel : data.channel
};
socket.emit('session description', data);
});
}
});
});
}
और यहाँ दिखाने के लिए क्या हो रहा है जिसके परिणामस्वरूप लॉग है?
उम्मीद है कि यह बहुत भ्रमित नहीं है लेकिन मेरा नेमस्पेस डिज़ाइन विभिन्न मॉड्यूल में एक्सपोजर की पेशकश करते हुए कई उम्मीदवारों के बीच कई कनेक्शनों की अनुमति देने के लिए है, 'Muveoo.RTC.connectedPeers [id] .dataChannels [name] '- आईडी बस एक अद्वितीय संदर्भित करता है वर्तमान सत्र में जुड़े प्रत्येक क्लाइंट को निर्दिष्ट आईडी, और 'वीडियो' और' ऑडियो 'डेटा चैनल नाम हैं। मुझे पता है कि यह परिवर्तनीय गोपनीयता के लिए बुरा है लेकिन मैं एप्लिकेशन का एकमात्र डेवलपर हूं, इसलिए फिलहाल परिवर्तनीय गोपनीयता मेरा ध्यान नहीं है। । –