【问题标题】:heroku : how to get the envPort on other js filesheroku:如何在其他 js 文件上获取 envPort
【发布时间】:2013-06-13 04:21:54
【问题描述】:

我正在尝试让我的节点应用程序在 heroku 上运行,但我偶然发现了一个我确定是常见问题,但是我无法解决。

我的项目是一个 3 部分系统,由以下部分组成:

  • 运行 express 和 socket.io 的服务器文件
  • express 节点服务器公用文件夹中的“Web 应用程序”
  • 一个独立的节点应用程序,在我的电脑上运行,链接到一个 arduino 板

在我的计算机上一切正常,因为每个人都从同一个 ip/端口监听节点服务器。但是在herku中,由于端口是动态的,我无法让其他两个组件知道连接到哪里。

我这样定义我的端口:

var port = process.env.PORT || 5000;

并通过 console.log 语句记录服务器上的端口。

在检查了我的日志几次之后,然后查看了 heroku 文档,我意识到我不能在 heroku 上拥有静态端口。

所以我有点不知道如何让另外两个组件来获取 heroku 端口。

旁注:如果我不能让它工作,这是我将尝试实施的解决方案

  1. 将 Web 服务器和 io 服务器分开,这样我就可以监听 IO 服务器本身,这个解决方案是有效的,但我希望只运行一个 heroku 实例
  2. 让 io 服务器监听 express 服务器事件,它应该可以工作......但这并不能解决我计算机上的部分问题。
  3. 跳桥,解决不了问题,但会让问题变得不那么重要。

感谢您花时间阅读我的存在问题,并提前感谢您的帮助

【问题讨论】:

  • 我不确定我是否理解您的问题。一切都应该听同一个端口吗?那他们就不能都听process.env.PORT吗?
  • 因为部分系统没有托管在heroku上,这不是一个可行的解决方案(这是一个远程控制arduino板的系统,所以arduinos不会在heroku应用程序中运行:)
  • 啊,现在我明白了这个问题:) 但我很困惑,它是您计算机上的独立设备,不知道您的 Heroku 应用程序的端口吗?公网域名(app_name.herokuapp.com)不能听吗?
  • mhhh 我应该试试,是的......我相信这个端口也是需要的。我今晚去看看,我的adruino现在不在线
  • 我以为(但我可能错了)甚至无法从外部访问该端口,并且仅由其内部路由系统使用。

标签: javascript node.js heroku socket.io


【解决方案1】:

要将外部应用程序连接到 Heroku 应用程序,您无需知道端口。由于可以通过域名访问该应用程序,因此您可以简单地连接到该应用程序(例如app_name.herokuapps.com,或者如果您愿意,也可以获取自己的域)。

【讨论】:

  • 我接受了这个答案,因为它实际上是真的,我确实收到了来自服务器的消息,但似乎我的主板在没有正确端口的情况下无法发送到服务器,奇怪
  • 您是否启用了 long-/xhr-polling?刚刚意识到 heroku 不支持套接字...见devcenter.heroku.com/articles/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2016-08-19
  • 2011-12-19
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多