0

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

我尝试过使用以下内容:https ://github.com/deepstreamIO/ds-demo-heroku

我已经完全克隆了该存储库,没有进行任何修改,并将其放在我自己的存储库中,我的 heroku 应用程序从中提取。当 heroku 尝试构建并运行它时,我在日志中看到了这一点:

在此处输入图像描述

这就是结束。我究竟做错了什么?


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

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

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

4

1 回答 1

1

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

要使此设置正常工作,您需要设置一个环境变量:MONGODB_URI配置文件中使用

这个 repo 是结合一个尚未发布的教程创建的,我没想到有人会尝试过 :)

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

要解决您的问题,您可以在配置文件中禁用缓存和存储连接器或阅读教程并执行所有步骤。


旁注1:

$PORT是一个由heroku自动分配的内部端口。对于 Web 应用程序,您应该始终使用始终为 80 的外部端口。内部端口仅适用于您的应用程序。教程中也对此进行了说明。

旁注2:

Deepstream 通过 HTTP websocket 和 TCP socket 提供连接。没错,heroku 不能同时使用两个端口,因为 heroku 不允许您管理多个端口。实际上 heroku 也根本不允许 TCP 连接。您可以只使用 HTTP websocket 连接,浏览器和 Node.js 都可以使用该连接(修复此问题后)。

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

于 2016-08-04T08:21:58.360 回答