Heroku上的Meteor js有2个或更多dynos

时间:2014-04-30 00:10:08

标签: javascript heroku websocket meteor

最近Heroku改变了他们的websockets的工作方式。当我将dyno滑块设置为2或更多时,我的MeteorJS应用程序现在无法连接。这是我在浏览器控制台中遇到的错误:

POST http://name.herokuapp.com/sockjs/414/ye3xmaq8/xhr_send 404 (Not Found) 

我并不特别需要2个dyno的表现,我只能在1 dyno睡觉后发生长时间延迟。

2 个答案:

答案 0 :(得分:2)

正如Slava所说,Heroku目前没有Sticky Sessions,所以拥有一个以上的Dyno是行不通的。如果没有粘滞会话,来自同一客户端的后续请求将转到不同的伺服器,而Meteor会在服务器上存储发布状态,因此这不起作用。

有一个解决你的Dyno睡觉的具体问题的方法。首先转到您的应用程序,然后在底部选择“+ Get Add-ons”,然后搜索“Heroku Scheduler”。此插件将允许您运行计划任务。如果那个计划的任务每隔十分钟左右就会对你的Heroku服务器“卷曲”,那么Dyno将不会进入睡眠状态,因为它看到的是流量(即使它在heroku中的形式:)

预定的命令可能如下所示:

curl http://www.yourHerokuAppUrl.com/ -s > /dev/null

选择1x dyno和“每10分钟”的频率,您将不会因等待dyno从睡眠状态回来而导致延迟问题。

答案 1 :(得分:2)

只是为了更新答案。

自2015年4月起,

Heroku supports session affinity(或粘性会话),您可以在Meteor应用中使用许多dynos

只需使用

启用它
$ heroku labs:enable http-session-affinity