目前,我正通过一个server.js文件运行两个(很快将是三个)node.js websocket应用程序。我正在使用express来服务我的整个页面,以及我写的粒子物理“游戏”。我也将成为一个聊天室,只是为了更多地了解这些事情。
我的问题(或缺少?)是所有这一切都在一个server.js文件中运行。 Heroku似乎需要这个,所以我不确定是否还有其他选择。 Heroku是我用来托管它的。
我的问题是,这是不好的做法吗?还有什么我应该做的,我失踪了吗?我的所有“应用程序”都是非常低的流量,因此我认为这不是一个大问题。我只是想从一开始就学习最佳实践,所以我不会犯愚蠢的错误。感谢。
编辑:如何使用procfile设置在Heroku中专门拆分应用程序?
答案 0 :(得分:4)
在我看来,如果应用程序不相关,这是一个不好的做法。如果资源可以处理它,则在同一物理或虚拟服务器上运行3个节点应用程序本身并不是很糟糕。但是,通过相同的Server.js文件运行它们将导致许多事情不属于他们不属于的地方。考虑应用1中的致命错误关闭(或阻碍性能)应用2或应用3的情况。
您应该通过将每个应用程序分隔成在不同端口上侦听的单独实例来封装每个应用程序,然后使用快速反向代理(读取:nginx)从Web代理它们。您可以创建无状态库来封装任何共享功能,然后在每个需要它的应用程序中包含这些库。
E.g。
app.yourserver.com => localhost:8997 (node app 1)
app2.yourserver.com = localhost:8998 (node app 2)
app3.yourserver.com => localhost:8999 (node app 3)
以下是有关如何使用nginx设置反向代理的信息:http://nginx.com/resources/admin-guide/reverse-proxy