如何在restify上扩展socket.io?

时间:2015-10-06 20:50:07

标签: node.js redis socket.io scalability restify

我正在尝试扩展在restify上运行的socket.io。我能够将它设置为在一个nodejs实例上运行得很好。现在,当我将应用程序扩展到四个实例时,应用程序生态系统崩溃了(即,事件未在客户端之间正确同步)。

我正在寻找有关如何使用restify设置粘性会话的示例。或者,现在如何完成?

粘性会话的更新是一年前的:Socket 1.0 Update / Scalability

我发现这两个博客都设置了这个,但他们都使用了Express,也是在一年多前写的:

当我制作无头API时,我认为Express不应该使用。这是推荐的思维方式还是我应该使用Express?

package.json:

  "dependencies": {
    "hiredis": "^0.4.1",
    "pouchdb": "^4.0.3",
    "pouchdb-upsert": "^1.1.3",
    "redis": "^2.0.1",
    "restify": "^4.0.0",
    "socket.io": "^1.3.7"
  }

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

Socket.io只保留您的服务器< - >客户端数据在单个实例中同步,因为Node是单线程的,并且位于单个CPU核心上。要同步多个实例,您需要更高级别的消息管理方法。 Socket.io推荐一个Redis实例。还有这个回购:http://socketcluster.io为你处理同样的问题。