javascript - 当 web 端口 80 已被使用时,如何监听 heroku 上的任何端口?

标签 javascript node.js meteor heroku port

我是 heroku 的新手,我已经在 heroku 上部署了一个 meteorjs 应用程序。我的 Meteorjs 应用程序是一个 web 应用程序,所以在构建完成后它会在端口 80 上的 heroku 上运行。但同时我也想在端口 eg:4000 或任何端口上监听,以便我可以捕获任何第三方触发的我的 webhook 事件我想听。在我的本地机器上,它运行完美,webapp 在一个端口上运行,监听器在另一个端口上运行,但在 heroku 上,在我部署它后,它只是运行的 webapp,而监听器不监听。任何人都可以帮助我或指导我。也欢迎任何新的解决方案..

在我的 server/main.js 中,我创建了一个 facebook-bot-messenger 的机器人实例,下面是启动监听器的代码

bot.listen(4000);

在我的 client/main.html 中,我有 html 代码,它只是 hello world

当我访问 http://localhost:3000 时在本地机器上我可以看到 helloworld 并且应用程序也在监听端口 4000。

当我访问 heroku 时 https://appname.herokuapp.com我看到了 hell 世界。在这种情况下,端口是 80,这很好,但机器人没有像我在 https://appname.heroku.com 上进行的任何邮寄调用一样收听。在端口 4000 上没有响应。

最佳答案

Heroku 会为您分配端口,因此您无法自行设置。您必须从 PORT 环境变量中读取端口号。在 Node 中,这将是 process.env.PORT

您还可以将 || 用于 as 和 OR。例如在下面的例子中,它会在 Heroku 上从环境变量中读取端口号,但在本地它会默认为端口 4000

const app = express();
app.set('port', (process.env.PORT || 4000));

//Start Server
app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

关于javascript - 当 web 端口 80 已被使用时,如何监听 heroku 上的任何端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43944929/

相关文章:

javascript - 如何指定 require/import 基本路径?

javascript - 如何用另一个字母/特殊字符替换字符串中的所有字母?

javascript - 使用 node.js 写入 MongoDB 副本集

javascript - 语法错误: Unexpected reserved word 'export' in meteor package

javascript - Cytoscape 不恢复元素

javascript - 奇怪的 focus() 行为

android - 如何从Android上传文件到node.js服务器

node.js - Socket.IO - Redis : SUBSCRIBE can't be processed. 连接已经关闭

javascript - 从 Chrome 扩展程序到 Meteor 托管网站 (meteor.com) 的 XHR 不一致

javascript - 使用 Meteor 时如何正确地限定嵌套的#each Spacebars 迭代器?