Javascript 获取客户端IP地址的函数导致内存泄漏

Javascript 获取客户端IP地址的函数导致内存泄漏,javascript,memory-leaks,webrtc,Javascript,Memory Leaks,Webrtc,我正在创建一个应用程序,用JavaScript频繁地(大约每秒)获取客户端的IP地址。 由于可能的禁令,我不想使用提供客户端IP地址的服务,如果可以的话。 另外,如果可以的话,我不想准备在web服务器上提供客户端IP地址的API 我发现WebRTC有助于解决此问题,并尝试使用WebRTC编写获取客户端IP地址的函数。 看起来该函数运行良好,但我发现该函数导致内存泄漏 下面是我在Chrome47中导致内存泄漏的代码 函数getIpAddress(){ 返回新承诺((解决、拒绝)=>{ var R

我正在创建一个应用程序,用JavaScript频繁地(大约每秒)获取客户端的IP地址。 由于可能的禁令,我不想使用提供客户端IP地址的服务,如果可以的话。 另外,如果可以的话,我不想准备在web服务器上提供客户端IP地址的API

我发现WebRTC有助于解决此问题,并尝试使用WebRTC编写获取客户端IP地址的函数。 看起来该函数运行良好,但我发现该函数导致内存泄漏

下面是我在Chrome47中导致内存泄漏的代码

函数getIpAddress(){ 返回新承诺((解决、拒绝)=>{ var RTCPeerConnection=window.RTCPeerConnection ||window.mozRTPeerConnection ||window.webkirtpeerconnection; var pc=新的RTPEERCONNECTION({ iceServers:[{URL:“stun:stun.services.mozilla.com”}] }, { 可选:[{RtpDataChannels:true}] }); pc.onicecandidate=ice=>{ 如果(pc.iceGatheringState==“complete”&&ice.candidate===null){//正在等待完成 解析(pc.localDescription.sdp.split(“\r\n”).filter(line=>line.indexOf(“c=”)==0)[0]。拆分(“”[2]); 如果(pc.signalingState!=“关闭”)pc.close(); } }; pc.createDataChannel(“”); pc.createOffer(结果=>{ pc.setLocalDescription(结果,函数(){},函数(){}); },函数(){}); }); } //多次调用getIpAddress会导致内存泄漏 (函数循环(){ getIpAddress()。然后(循环);
})();我不确定循环WebRTC请求是“按设计”计划的。 仅执行一次功能时是否存在内存泄漏? 通常,客户端只需要捕获一次IP

在我的firefox中,没有内存泄漏,因为循环,只需要大的处理器费用

如果您可以使用PHP,那么获取IP地址将非常容易

您知道
getIpAddress
的哪个部分会导致内存泄漏吗

似乎多次实例化
rtpeerconnection
会导致内存泄漏。 以下代码会导致内存泄漏,并可能导致Chrome 47和Firefox 43崩溃

while(true){
var RTCPeerConnection=window.RTCPeerConnection
||window.mozRTPeerConnection
||window.webkirtpeerconnection;
var pc=新的RTPeerConnection({});
pc.close();
}
我需要最新的IP地址。如果有办法捕捉IP地址的变化,那就比监视好。在Windows 7上的Firefox 43(64位)中,发生了内存泄漏。