2015-10-06 24 views
4

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

我正在寻找关于如何使用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

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