尝试在 heroku 上安装 deepstream.io

Trying to install deepstream.io on heroku

过去一个小时我一直在用头撞墙试图启动 deepstream.io 服务器并 运行 在 heroku 上连接但没有成功。

我试过使用以下方法:https://github.com/deepstreamIO/ds-demo-heroku

我完全克隆了那个 repo,没有做任何修改,并将它放在我自己的 repo 中,我的 heroku 应用程序从中提取。当 heroku 尝试构建它并 运行 它时,我在日志中看到了这一点:

到此结束。我做错了什么?


旁注: 我读到 Heroku 不允许为应用程序保留任何所需的端口,但它传递了一个应用程序可以在 $PORT 多变的?如果这是正确的,这将如何在端点需要在特定端口可靠地连接到服务器的生产环境中工作。如果由于某种原因服务器应用程序崩溃,重新启动,然后 Heroku 为其分配了一个不同的端口,现在所有端点都将无法连接。

其次,deepstream.io 似乎需要指定 两个 端口(一个用于 TCP 传入流量,另一个来自 "browser" 流量,请参阅 https://deepstream.io/tutorials/core/getting-started-quickstart/).如果 Heroku 只提供应用程序可以绑定到的一个端口,如果它需要两个,deepstream.io 如何工作?

非常感谢任何帮助 - 谢谢!

错误是Error invalid schema, expected mongodb。您会在日志中看到它。

要使此设置正常工作,您需要设置一个环境变量:MONGODB_URI 用于 configuration file

这个repo是结合教程创建的,还没有发布,没想到之前有人试过:)

所以我现在将教程放入自述文件中:https://github.com/deepstreamIO/ds-demo-heroku

要解决您的问题,您可以 disable the cache and storage connector 在您的配置文件中或阅读教程并执行所有步骤。


旁注 1:

$PORT 是一个内部端口,由 heroku 自动分配。对于 Web 应用程序,您应该始终使用始终为 80 的外部端口。内部端口只能在您的应用程序中使用。 这在教程中也有解释。

旁注 2:

Deepstream 通过 HTTP websocket 和 TCP 套接字提供连接。 没错,你不能在 heroku 中同时使用两个端口,因为 heroku 不允许你管理多个端口。实际上 heroku 也完全 NOT allow TCP connections 。 您可以只使用 HTTP websocket 连接,它可以被浏览器和通过 Node.js(在 this issue is fixed 之后)使用。

仅当性能对您非常重要时才需要 TCP 套接字连接。但在那种情况下,无论如何你应该从 heroku 转移到另一个供应商 ;) 这部分在教程中也有提到。