【问题标题】:Heroku Get IP AddressesHeroku 获取 IP 地址
【发布时间】:2014-02-18 19:30:32
【问题描述】:

刚开始使用 Heroku,我正在尝试在那里部署其他人的节点应用程序。要启动服务器,我进入node server.js 并且可以正常工作。然后显示relevant IPs { '[MY IP ADDRESS]': null }

我部署到 Heroku,服务器正在运行,但它显示了 relevant IPs { dummy: null }。我搜索了代码以找到dummy 的含义。这是我发现的:

// find all ip addresses
// We use a dummy for a special case where node can't list network interfaces (freeBSD)

var sockets = {'dummy': null};
for (var name in interfaces) {
console.log('discovering all IPs from', name);
interfaces[name].forEach(function (ipInfo) {
  if (ipInfo.internal == false && ipInfo.family == "IPv4") {
    // this one is interesting, use it
    delete sockets['dummy'];
    sockets[ipInfo.address] = null;
  }
});
}

console.log("relevant IPs", sockets);

所以,我的问题是,Heroku 可以找到 IP 地址吗?如果可以,为什么会显示 dummy

【问题讨论】:

    标签: javascript node.js sockets heroku ip-address


    【解决方案1】:

    这是错误的代码。它试图找到第一个非环回 IP 以显式绑定到该 IP 以用于传入流量。

    您应该通过特殊的0.0.0.0 地址绑定到所有可用的地址,以便在 Heroku 上提供服务。如果你在 Heroku 路由器后面提供服务,你应该监听 PORT 环境变量中指定的端口。

    【讨论】:

    • 我在server.js 文件中设置了端口。 var port = process.env.PORT || 5000;
    • 如何按照您所说的方式进行设置?
    • 如果你使用 express,你可以完全去掉 IP:
    • 我需要IP才能找到家里的Sonos播放器。 GitHub 项目在这里:github.com/jishi/node-sonos-http-api
    • 这在 Heroku 中根本不起作用。如果您尝试在本地网络中发现设备,则需要在 LAN 中托管代码/服务器。
    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2013-01-16
    • 2011-02-07
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多