4

我在 heroku 上扩展我的 Node.js 应用程序时遇到问题。我正在使用 RedisStore 使我的套接字连接在节点进程之间保持持久。我正在扩展到 2、3 个进程。我在这里遵循此代码https://gist.github.com/1391583。在一个进程上一切正常,但是当我向外扩展时,广播不会到达其他节点。但是,连接信息是持久的,并且我不会收到持续的握手错误和断开连接。

我的理解是 socket.io RedisStore 还在内部处理 redis Pub/Sub 以保持多个进程同步。正如这里提到的https://groups.google.com/forum/?fromgroups&hl=en#!topic/socket_io/gymBTlruYxs 顺便说一句,我应用了#848 socket.io 补丁,它似乎没有解决问题我。

截至 2012 年 5 月 14 日,Heroku 仅支持我正在使用的 socket.io 的 xhr-polling 传输。那么这个问题仅与长轮询有关吗?有解决办法吗?

提前致谢。

4

2 回答 2

1

抱歉,如果这完全无关紧要,但是当我看到需要可扩展性、节点、redis 和 pub/sub 的问题时,我会想到Beseda - 这是您应该研究的问题吗?

于 2012-05-15T08:12:03.713 回答
0

我通过实现自己的 Redis 层解决了这个问题。我让部署在不同实例上的所有节点服务器订阅中央 Redis 服务器,并从 Redis 而不是套接字侦听消息。它适用于 websockets 和 xhr 轮询。

于 2014-02-24T18:58:26.343 回答