【发布时间】: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 端口。
旁注:如果我不能让它工作,这是我将尝试实施的解决方案
- 将 Web 服务器和 io 服务器分开,这样我就可以监听 IO 服务器本身,这个解决方案是有效的,但我希望只运行一个 heroku 实例
- 让 io 服务器监听 express 服务器事件,它应该可以工作......但这并不能解决我计算机上的部分问题。
- 跳桥,解决不了问题,但会让问题变得不那么重要。
感谢您花时间阅读我的存在问题,并提前感谢您的帮助
【问题讨论】:
-
我不确定我是否理解您的问题。一切都应该听同一个端口吗?那他们就不能都听
process.env.PORT吗? -
因为部分系统没有托管在heroku上,这不是一个可行的解决方案(这是一个远程控制arduino板的系统,所以arduinos不会在heroku应用程序中运行:)
-
啊,现在我明白了这个问题:) 但我很困惑,它是您计算机上的独立设备,不知道您的 Heroku 应用程序的端口吗?公网域名(app_name.herokuapp.com)不能听吗?
-
mhhh 我应该试试,是的......我相信这个端口也是需要的。我今晚去看看,我的adruino现在不在线
-
我以为(但我可能错了)甚至无法从外部访问该端口,并且仅由其内部路由系统使用。
标签: javascript node.js heroku socket.io