最近 Heroku 改变了他们的 websocket 的工作方式。当我将 dyno slider 设置为 2 或更多时,我的 MeteorJS 应用程序现在无法连接。这是我在浏览器控制台中收到的错误:
POST http://name.herokuapp.com/sockjs/414/ye3xmaq8/xhr_send 404 (Not Found)
我并不特别需要 2 个测功机的性能,我只是不能让 1 个测功机在进入休眠状态后出现长时间延迟。
最佳答案
正如 Slava 提到的,Heroku 目前没有粘性 session ,因此拥有多个 Dyno 是行不通的。如果没有粘性 session ,来自同一客户端的后续请求将发送到不同的伺服系统,并且 Meteor 将发布状态存储在服务器上,因此这是行不通的。
针对您的 Dyno sleep 问题有一个解决方案。首先转到您的应用程序,然后选择底部的“+ 获取附加组件”,然后搜索“Heroku Scheduler”。这个插件可以让你运行计划任务。如果该计划任务是每十分钟左右“ curl ”一次到您的 Heroku 服务器,那么 Dyno 将不会进入休眠状态,因为它正在看到流量(即使它在 Heroku 中的形式:)
计划的命令可能如下所示:
curl http://www.yourHerokuAppUrl.com/ -s > /dev/null
选择 1x 测功机和“每 10 分钟”的频率,您将不会遇到因等待测功机从 sleep 状态恢复而导致的延迟问题。
关于javascript - Heroku 上的 Meteor js 具有 2 个或更多测功机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377459/