Socket.io 是不是与 Heroku 一起工作?

Posted

技术标签:

【中文标题】Socket.io 是不是与 Heroku 一起工作?【英文标题】:Does Socket.io work at all with Heroku?Socket.io 是否与 Heroku 一起工作? 【发布时间】:2014-10-30 00:31:12 【问题描述】:

我试图找到这个问题的答案,但我只能找到旧的“不,它不会”或“将来会”。

我尝试了socket.io-redis,但无济于事。在 Heroku 上,一个测功机将创建工作套接字,除此之外,您将从 Socket.io 收到以下错误,这意味着没有进行缩放。

"code":1,"message":"会话 ID 未知"

在我看来,Heroku 声称拥有的 WebSocket“支持”对开发人员来说真是一个残酷的笑话。

编辑: Heroku 支持 websockets,但它不适用于带有 Redis 的 socket.io 集群。所以我只运行一个专用于套接字的实例。当我想在 Heroku 中使用套接字时。

【问题讨论】:

【参考方案1】:

披露:我是 Heroku 的 Node.js 平台所有者。

tl;dr:我们在私人测试版中支持 multi-dyno socket.io。

Heroku 完全支持 WebSockets,它不需要会话亲和性,并且与 socket.io 不同。

Socket.io 是一种更高级别的软实时抽象,它使用 WebSocket 作为其众多潜在传输之一。 Socket.io 确实需要会话亲和性,并且 socket.io 的任何多节点事件共享实现(在 Heroku 或其他地方)都需要 socket.io-redis(或类似的)。

粘性会话的大多数实现都会中断12factor architecture。我们现在为 socket.io、meteor 和 sockjs 用户运行了一个灵活、可扩展、翻转的粘性会话测试版。如果您想加入,请发送电子邮件至 hunter@heroku.com;我们将在接下来的几周内向公众开放。

【讨论】:

以上是关于Socket.io 是不是与 Heroku 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

将 Socket.io 与 Sequelize 一起使用

WebSockets(Socket.io)与heroku自动断开连接,我应该扩展吗?

Chrome 中的“意外响应代码:503”。也许与heroku上的socket.io有关?

Heroku 上的 Socket.io 聊天应用程序与 node.js

Socket.io 适用于 localhost 但不适用于 Heroku 服务器

将简单的 Node.js 和 Socket.io 聊天应用程序与 Rails 应用程序连接起来(在 Heroku 上)