Как получить значения ip адресов в массив - JavaScript

205
11 апреля 2018, 08:18

Добрый день! Есть код. который получает через 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);});

Answer 1

Попробуйте вот такой код.

//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); 
});

Answer 2

Соберите данные колбеком в массив, вместо вывода на консоль.

var ips = []
getIPs(function(ip) { ips.push(ip); });
console.log(ips)
READ ALSO
создать массив из многомерного массива

создать массив из многомерного массива

Есть многомерный массив вида:

199
Ошибка в php Fatal error:

Ошибка в php Fatal error:

Есть вот такой код:

191
Как распарсить API Github на PHP?

Как распарсить API Github на PHP?

Всем приветПытаюсь вывести на сайт список релизов репозитория через API Github

212
Как связывать пользователей с базой по технологии WebSocket

Как связывать пользователей с базой по технологии WebSocket

Никак не могу понять следующие моменты в технологии WebSocket: 1По сути провайдеры если не ошибаюсь используют динамические ip, тоесть происходит...

154