"getaddrinfo ENOTFOUND" error on heroku

1.9k views Asked by At

I am tring to deploy a webRTC signaling server on Heroku. It works on my local machine but gave:

Error: getaddrinfo ENOTFOUND global.xirsys.net global.xirsys.net` 

when deployed on Heroku.

I am using simpleWebRTC + signalmaster + XirSys

The official doc from xirSys shows:

// 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();

And I used axios:

axios.put("https://acumany:[email protected]/_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);
            });

My guess is that heroku switch http/https in its own load balancer. How can I change this code to make it work? (either with https or axios)

1

There are 1 answers

1
R.Blakely On BEST ANSWER

global.xirsys.net is a dynamic domain which geographically routes your request. Maybe something about that is incompatible with Heroku. Try a static xirsys endpoint instead. Like ss.xirsys.com for Singapore or us.xirsys.com for US east coast.

You can see a list of endpoints here: https://us.xirsys.com:9000/api-intro