Приведенный ниже код отлично работает для Chrome / Firefox, но не работает в IE / Edge.Я знаю, что это не поддерживается, но мне интересно, есть ли какие-нибудь подходящие обходные пути или решения?Я пытаюсь сделать его кроссбраузерным, что является важной частью.Любая помощь здесь будет принята с благодарностью!
(Полегче на меня, я нуб .... просто ищу какой-то совет и помощь по этому вопросу!) Заранее спасибо!
Ошибка, которую я получаюв Internet Explorer: «Объект не поддерживает это действие» (pc = new RTCPeerConnection ({iceServers: []})
Ошибка, которую я получаю вКрай: "Объект не поддерживает свойство или метод 'createDataChannel'"
var serverFound = false;
var pc = null;
var appURL = ":5000/";
var testURL = appURL + "api/status";
$(document).ready(function() {
// Retry every 5 seconds.
setInterval(function(){
findMyIpAndConnectToSubnet();
}, 5000);
// If we don't get a connection within 10 seconds, then prompt for it.
setTimeout(function() {
$("#serverentry").show();
}, 10000);
findMyIpAndConnectToSubnet();
$("#btnConnect").on("click", function() {
var ip = $("#ip").val();
localStorage["lastConnection"] = ip;
location.href = "http://"+ip+appURL;
});
});
function findMyIpAndConnectToSubnet() {
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(pc.setLocalDescription.bind(pc), noop); // create offer and set local description
pc.onicecandidate = function(ice){ //listen for candidate events
if(!ice || !ice.candidate || !ice.candidate.candidate) return;
var myIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
discoverNeighborNPUServers(myIP);
// console.log('my IP: ', myIP);
pc.onicecandidate = noop;
};
}
function discoverNeighborNPUServers(myIP) {
// Try and speed through by reconnecting to the last one automatically.
var lastConnection = localStorage["lastConnection"];
if (lastConnection) {
$("#ip").val(lastConnection);
check(lastConnection);
}
var skipDiscovery = localStorage["skipDiscovery"];
if (skipDiscovery != "true") {
var ipasplit = myIP.split(".");
ipasplit[3] = "0";
while (parseInt(ipasplit[3]) < 256) {
var newipa = ipasplit.join(".");
check(newipa);
ipasplit[3] ++;
}
}
}
function check(ip) {
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://"+ip+testURL, true);
xhr.timeout = 2000; // Don't wait very long
xhr.onload = function() {
if (xhr.status === 200 && !serverFound) {
serverFound = true; // In case the server is on multiple IPs, just do the first one.
localStorage["lastConnection"] = ip;
location.href = "http://"+ip+appURL;
}
else {
}
};
xhr.send();
}