heroku 多个测功机 socket.io

Posted

技术标签:

【中文标题】heroku 多个测功机 socket.io【英文标题】:heroku multiple dyno socket.io 【发布时间】:2014-02-07 03:23:14 【问题描述】:

我正在使用 Socket.io 开发一个 node.js 应用程序,并将其部署在 Heroku Dyno 上。 Socket.io 将 RedisStore 与它的 PUB/SUB 一起使用。 Socket.io 客户端与 heroku 中的一个测功机完美配合。但是当我将 dyno 的数量增加到一个以上(比如两个)时,socket io 客户端请求不起作用。

请让我知道在为支持 socket.io 的多个 web dyno 设置 heroku 时是否需要在客户端进行任何特定配置。

【问题讨论】:

【参考方案1】:

抱歉,heroku 不支持粘性会话,而且 Socket.io 也不支持

粘性负载平衡如果您计划分配负载 不同进程或机器之间的连接,你必须 确保与特定会话 ID 关联的请求连接到 产生它们的过程。

Using multiple nodes

【讨论】:

取自同一篇文章:Fedor Indutny has created a module called sticky session that ensures file descriptors (ie: connections) are routed based on the originating remoteAddress (ie: IP). 所以我相信 Heroku does 支持这一点。【参考方案2】:

engine.io github 上的一个问题中有一个很棒的线程。帮助我更好地理解了粘滞会话、engine.io 和 heroku 的问题。

【讨论】:

【参考方案3】:

Heroku 现在支持粘性会话 - 但前提是您加入了他们的开发(测试版)计划。

根据我的经验,Heroku 在与 Socket.io_Redis 插件和启用设置结合使用时可以很好地与 socket.io 配合使用。

【讨论】:

以上是关于heroku 多个测功机 socket.io的主要内容,如果未能解决你的问题,请参考以下文章

您如何在单个 Heroku 测功机上运行多个 DelayedJob 工作人员?

Socket.io 在 Node.js + Redis + Heroku(多个测功机)环境中发出并不总是收到

哪种Heroku测功机适合1500个以上的活跃用户使用?

Heroku 上的无操作测功机

Heroku 免费测功机“闲置”中期测试:是啥杀死了它?

Heroku 测功机上有多少应用程序