Merge pull request #11 from upsuper/master

Try to read IP address from local description.
This commit is contained in:
Daniel Roesler 2015-02-25 08:11:37 -08:00
commit 62f08b5fac
2 changed files with 51 additions and 24 deletions

View file

@ -55,22 +55,24 @@ function getIPs(callback){
//construct a new RTCPeerConnection //construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints); var pc = new RTCPeerConnection(servers, mediaConstraints);
function handleCandidate(candidate){
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
var ip_addr = ip_regex.exec(candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
//listen for candidate events //listen for candidate events
pc.onicecandidate = function(ice){ pc.onicecandidate = function(ice){
//skip non-candidate events //skip non-candidate events
if(ice.candidate){ if(ice.candidate)
handleCandidate(ice.candidate.candidate);
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
}; };
//create a bogus data channel //create a bogus data channel
@ -83,6 +85,18 @@ function getIPs(callback){
pc.setLocalDescription(result, function(){}, function(){}); pc.setLocalDescription(result, function(){}, function(){});
}, function(){}); }, function(){});
//wait for a while to let everything done
setTimeout(function() {
//read candidate info from local description
var lines = pc.localDescription.sdp.split('\n');
lines.forEach(function(line) {
if (line.startsWith('a=candidate:')) {
handleCandidate(line);
}
});
}, 1000);
} }
//Test: Print the IP addresses into the console //Test: Print the IP addresses into the console

View file

@ -62,22 +62,24 @@
//construct a new RTCPeerConnection //construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints); var pc = new RTCPeerConnection(servers, mediaConstraints);
function handleCandidate(candidate){
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
var ip_addr = ip_regex.exec(candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
//listen for candidate events //listen for candidate events
pc.onicecandidate = function(ice){ pc.onicecandidate = function(ice){
//skip non-candidate events //skip non-candidate events
if(ice.candidate){ if(ice.candidate)
handleCandidate(ice.candidate.candidate);
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
}; };
//create a bogus data channel //create a bogus data channel
@ -90,6 +92,17 @@
pc.setLocalDescription(result, function(){}, function(){}); pc.setLocalDescription(result, function(){}, function(){});
}, function(){}); }, function(){});
//wait for a while to let everything done
setTimeout(function(){
//read candidate info from local description
var lines = pc.localDescription.sdp.split('\n');
lines.forEach(function(line){
if(line.startsWith('a=candidate:'))
handleCandidate(line);
});
}, 1000);
} }
//insert IP addresses into the page //insert IP addresses into the page