用webrtc获取ip,PC上chrome获取正常。
但是手机浏览器,有的时候可以读取到ip,
有的时候读到下边这一句,直接卡死,后边代码也不执行了。
var pc = new RTCPeerConnection(servers, mediaConstraints);
大佬们,有没有办法,到这里如果不行就return出去,然后PC以及能获取ip的手机还正常拿ip……
在线等……非常急……
用webrtc获取ip,PC上chrome获取正常。
但是手机浏览器,有的时候可以读取到ip,
有的时候读到下边这一句,直接卡死,后边代码也不执行了。
var pc = new RTCPeerConnection(servers, mediaConstraints);
大佬们,有没有办法,到这里如果不行就return出去,然后PC以及能获取ip的手机还正常拿ip……
在线等……非常急……
先判断下支不支持吧,Window下面有没有这个变量,有的话try catch一下。没有直接给空值
if (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection) {
var Rtc = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
try {
var nrtc = new Rtc({
iceServers: []
});
nrtc.createDataChannel('', {
reliable: !1
});
} catch (e) {
infoObj['ip'] = '0.0.0.0';
return infoObj;
}
var e = false;
nrtc.onicecandidate = function(Rtc) {
...
};
nrtc.createOffer(function(a) {
nrtc.setLocalDescription(a, that.F(), that.F());
}, that.F());
infoObj.ip = window.currentIp || '0.0.0.0';
return infoObj;
} else {
infoObj['ip'] = '0.0.0.0';
return infoObj;
}
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
自问自答:
我发现,小米、华为等使用UC浏览器内核的浏览器,以及UC浏览器均不支持WEBRTC技术,并且这些浏览器读取webRTC的代码时还可能会出现 卡死的问题,导致接下来的代码没办法执行,这就很特么坑了。
我的解决办法:
写一个定时器,3秒钟,如果还没获取到用户的ip,那么可以宣告失败了(3秒已经是很长的了,大家可酌情减少),那么就只能给一个空值了。