RTCPeerConnection и createDataChannel не работают для Edge
Я работал над приложением, в котором, когда человек входит в учетную запись, IP-адрес устройства сохраняется в серверной и локальной памяти. Затем, когда человек входит в ту же учетную запись из другого браузера или около того, он покажет всплывающее окно с последним IP-адресом входа. Кажется, он работает на Chrome и Mozilla, но не работает в браузере Edge. Он всегда возвращает ноль, потому что он не вводит код после pc.createDataChannel.
Фрагмент кода, как показано ниже.
const getIpAddress = state => {
window.RTCPeerConnection = window.RTCPeerConnection ||
window.mozRTCPeerConnection || window.webkitRTCPeerConnection || false;
let ip = false;
if (window.RTCPeerConnection) {
ip = [];
var pc = new RTCPeerConnection({ iceServers: [] }), noop = function
() {
};
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
pc.onicecandidate = function (event) {
if (event && event.candidate && event.candidate.candidate) {
var s = event.candidate.candidate.split('\n');
ip.push(s[0].split(' ')[4]);
localStorage.setItem('ipV4Address', ip[0]);
}
};
}
return state;
};
Я также пытался использовать адаптер JS, но не уверен, как именно его использовать.
2 ответа
Одноранговые соединения WebRTC еще не полностью поддерживаются в браузере Edge v18. Вы можете проверить совместимость вашего браузера в: Могу ли я использовать RTCPeerConnection?
Кажется, что на самом деле нет способа получить частный ip в пограничном браузере, поэтому пришлось использовать сторонний api, чтобы получить публичный ip и использовать его.