首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Heroku的多端口应用程序的推荐方法

使用Heroku的多端口应用程序的推荐方法
EN

Stack Overflow用户
提问于 2017-01-17 14:06:35
回答 2查看 1.8K关注 0票数 2

我从SE上的其他问题中了解到,在Heroku应用程序中使用多个端口是不可能的,因为Heroku为一个端口分配了一个环境变量。

有什么推荐的方法来解决这个问题吗?我见过一些人使用带有子域的代理模块:

Heroku + node.js: I have a server which uses multiple ports. How can I get Heroku to allocate them?

然而,在这篇文章中:

How to create a subsubdomain for an app on heroku: (e.g. sub.myapp.herokuapp.com)

这表明在heroku中不再可能存在子域。

在我的应用程序中,我目前正在使用express提供我的内容,并且有一个用于同步一些实时内容的websocket服务器,两者都需要一个端口。我的问题是,在heroku中可以使用子域吗?对于需要多个端口的web应用程序,推荐的方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-18 00:54:25

所以,为了回答你的问题:

您不能让一个应用程序在一个Heroku dyno上的多个端口上运行。

但是,您可以运行多个Heroku dynos,并且每个Heroku dynos运行不同的命令。这允许您在同一项目中的Heroku上运行不同类型的服务器。执行此操作的方法是指定如何在Procfile中运行不同类型的服务器,例如:

代码语言:javascript
复制
web: node server.js
other-web: node other-server.js

要运行server.js的一个实例和other-server.js的一个实例,您可以简单地告诉Heroku将这些进程作为dynos运行,如下所示:

代码语言:javascript
复制
$ heroku ps:scale web=1 other-web=1

现在--关于websockets,Heroku在几年前就支持它们了(你可以在这里阅读更多:https://devcenter.heroku.com/articles/websockets)。这意味着您可以通过遵循典型的websocket模式在Heroku上使用本地websocket应用程序。

在我刚刚链接的文档中,有一个Node应用程序示例--它还特别概述了它是如何工作的。

最后--关于子域--你链接到的另一个Stack Overflow帖子不再准确。Heroku很久以前就添加了对通配符域的支持(通常用于多租户目的)。

这意味着,如果您正在构建一个基于子域为用户动态提供页面的应用程序,那么您就走运了!这是完全支持的。你可以这样做:

代码语言:javascript
复制
$ heroku domains:add *.example.com

当你更新你的DNS以指向通配符时,你应该开始看到所有的子域请求进入你的Heroku应用程序。

要了解更多关于Heroku +子域的内容,他们在这里有一篇很棒的文章:https://devcenter.heroku.com/articles/custom-domains#add-a-wildcard-domain

票数 2
EN

Stack Overflow用户

发布于 2017-01-22 06:22:53

我最终发现您实际上可以对websocket和http使用相同的端口。例如,使用socket.io,您只需执行以下操作...

代码语言:javascript
复制
var SocketIO = require('socket.io');
var express = require('express');

var app = express();

// Put your middleware and routes here...

const server = app.listen(port, function(err){
      console.log("Express server running on port:" + port);
});

var io = SocketIO(server);

由于执行app.listen时的返回值是服务器,因此您实际上可以直接将其传递给socketIO。在那里,您可以执行io.on(...)等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41690066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档