"getaddrinfo ENOTFOUND" ошибка на героку
Я пытаюсь развернуть сервер сигнализации webRTC на Heroku. Он работает на моей локальной машине, но дал:
Error: getaddrinfo ENOTFOUND global.xirsys.net global.xirsys.net`
при развертывании на Heroku.
Я использую simpleWebRTC + signalmaster + XirSys
Официальный документ от xirSys показывает:
// Node Get ICE STUN and TURN list
var https = require("https");
var options = {
host: "global.xirsys.net",
path: "/_turn/Acumany",
method: "PUT",
headers: {
"Authorization": "Basic " + new Buffer("acumany:4b6aea04-6152-11e7-9d16-3fa9b82ffd4f").toString("base64")
}
};
var httpreq = https.request(options, function(httpres) {
var str = "";
httpres.on("data", function(data){ str += data; });
httpres.on("error", function(e){ console.log("error: ",e); });
httpres.on("end", function(){
console.log("ICE List: ", str);
});
});
httpreq.end();
И я использовал axios:
axios.put("https://acumany:4b6aea04-6152-11e7-9d16-3fa9b82ffd4f@global.xirsys.net/_turn/Acumany")
.then((res) => {
var result = res.data;
var iceServers = result.v.iceServers;
var turnservers = [],
stunservers = [];
iceServers.forEach(function (server) {
if(server.url.indexOf("stun:") != -1){
stunservers.push(server);
}else{
turnservers.push(server);
}
});
console.log("emitting server info => ", stunservers, turnservers);
client.emit('stunservers', stunservers || []);
client.emit('turnservers', turnservers);
})
.catch(function (err) {
console.log("axios error => ", err);
});
Полагаю, что героку переключают http/https в свой балансировщик нагрузки. Как я могу изменить этот код, чтобы он работал? (либо с https или axios)
1 ответ
global.xirsys.net - это динамический домен, который географически направляет ваш запрос. Может быть, что-то об этом несовместимо с Heroku. Вместо этого попробуйте статическую конечную точку xirsys. Например, ss.xirsys.com для Сингапура или us.xirsys.com для восточного побережья США.
Вы можете увидеть список конечных точек здесь: https://us.xirsys.com:9000/api-intro