如何在restify上缩放socket.io?

我正在尝试缩放运行restifysocket.io。 我能够将其设置为在一个nodejs实例上运行良好。 现在,当我将应用扩展到四个实例时,应用生态系统崩溃了(即客户端之间的事件没有正确同步)。

我正在寻找关于如何设置restify的粘性会话的例子。 或者,现在怎么样?

Sticky会话的更新是在一年前: Socket 1.0更新/可伸缩性 。

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

  • 第1条
  • 第二条

由于我正在制作一个无头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" } 

任何帮助,将不胜感激!

Solutions Collecting From Web of "如何在restify上缩放socket.io?"

由于Node是单线程的,并且位于单个CPU内核上,所以Socket.io只会将您的服务器客户端数据同步到一个实例中。 要同步多个实例,您需要更高级别的消息pipe理方法。 Socket.io推荐使用Redis的一个实例。 还有这个回购: http : //socketcluster.io它为您处理相同的问题。