Добрый день! Есть код. который получает через webrtc ip адреса юзера и выводит значения в консоль. Можно как то получить значения ip адресов в массив ? Пробовал вместо getIPs(function(ip){console.log(ip);}); функции подставить var arr=[]; getIPs(function(ip){arr.push(ip);}); Но почему то при выводе значений массива получаю udentified.
//get the IP addresses associated with an account
function getIPs(callback){
var ip_dups = {};
//compatibility for firefox and chrome
var RTCPeerConnection = window.RTCPeerConnection
|| window.mozRTCPeerConnection
|| window.webkitRTCPeerConnection;
var mediaConstraints = {
optional: [{RtpDataChannels: true}]
};
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{"url": "stun:stun.services.mozilla.com"}]
var servers = undefined;
//add same stun server for chrome
if(window.webkitRTCPeerConnection)
servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
//construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints);
//listen for candidate events
pc.onicecandidate = function(ice){
//skip non-candidate events
if(ice.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
pc.createDataChannel("");
//create an offer sdp
pc.createOffer(function(result){
//trigger the stun server request
pc.setLocalDescription(result, function(){}, function(){});
}, function(){});
}
//Test: Print the IP addresses into the console
getIPs(function(ip){console.log(ip);});
Попробуйте вот такой код.
//get the IP addresses associated with an account
function getIPs(callback) {
getIPs.ip_dups = {};
//compatibility for firefox and chrome
var RTCPeerConnection = window.RTCPeerConnection ||
window.mozRTCPeerConnection ||
window.webkitRTCPeerConnection;
var mediaConstraints = {
optional: [{
RtpDataChannels: true
}]
};
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{"url": "stun:stun.services.mozilla.com"}]
var servers = undefined;
//add same stun server for chrome
if (window.webkitRTCPeerConnection)
servers = {
iceServers: [{
urls: "stun:stun.services.mozilla.com"
}]
};
//construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints);
//listen for candidate events
pc.onicecandidate = function(ice) {
//skip non-candidate events
if (ice.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 (getIPs.ip_dups[ip_addr] === undefined) {
getIPs.ip_dups[ip_addr] = true;
callback(ip_addr);
}
}
};
//create a bogus data channel
pc.createDataChannel("");
//create an offer sdp
pc.createOffer(function(result) {
//trigger the stun server request
pc.setLocalDescription(result, function() {}, function() {});
}, function() {});
}
//Test: Print the IP addresses into the console
getIPs(function(ip) {
console.log(getIPs.ip_dups);
});
Соберите данные колбеком в массив, вместо вывода на консоль.
var ips = []
getIPs(function(ip) { ips.push(ip); });
console.log(ips)
Всем приветПытаюсь вывести на сайт список релизов репозитория через API Github
Никак не могу понять следующие моменты в технологии WebSocket: 1По сути провайдеры если не ошибаюсь используют динамические ip, тоесть происходит...