一个服务器文件中存在多个 Node.js“应用程序”是一种不好的做法吗?

Ric*_*ner 4 javascript heroku node.js express

目前,我正在通过一个 server.js 文件运行两个(很快将是三个)node.js websocket 应用程序。我正在使用 Express 来服务我的整个页面,以及我编写的粒子物理“游戏”。我还将创建一个聊天室,只是为了了解更多有关这些事情的信息。

我的问题(或缺乏?)是所有这些都是通过一个 server.js 文件运行的。Heroku 似乎需要这个,所以我不确定是否还有其他选择。我用 Heroku 来托管它。

我的问题是,这是不好的做法吗?还有其他我应该做而我错过的事情吗?我所有的“应用程序”的流量都非常低,所以我认为这不是一个大问题。我只是想从一开始就学习最佳实践,这样我就不会犯愚蠢的错误。谢谢。

编辑:如何使用 procfile 设置在 Heroku 中专门拆分应用程序?

Sam*_*vin 5

在我看来,如果应用程序不相关,这是一个不好的做法。如果资源可以处理的话,在同一物理或虚拟服务器上运行 3 节点应用程序本身并不坏。然而,通过同一个 Server.js 文件运行它们将会导致很多东西出现在它们不应该出现的地方。考虑这样一种情况:应用程序 1 中的致命错误导致应用程序 2 或应用程序 3 关闭(或影响性能)。

您应该通过将每个应用程序分离到侦听不同端口的单独实例来封装每个应用程序,然后使用快速反向代理(读取:nginx)从网络代理到它们。您可以创建无状态库来封装任何共享功能,然后将这些库包含在需要它的每个应用程序中。

例如

app.yourserver.com => localhost:8997 (node app 1)
app2.yourserver.com = localhost:8998 (node app 2)
app3.yourserver.com => localhost:8999 (node app 3)
Run Code Online (Sandbox Code Playgroud)

以下是有关如何使用 nginx 设置反向代理的信息:http://nginx.com/resources/admin-guide/reverse-proxy