2013-05-14 54 views
1

我使用nodejs,express和socketio编写了一个聊天应用程序。 它支持一些聊天在一个房间里,并支持多个房间, 而且我认为在客户端的数据在内存中,比如有全球 变量,我存储客户数据这样的..如何使用socketio集群创建nodejs?

var rooms = { 
    "room1": [ 
     {username: "user1", socket: user1Socket}, 
     {username: "user2", socket: user2Socket}, 
    ], 
    "room2": [ 
     {username: "user3", socket: user3Socket}, 
     {username: "user4", socket: user4Socket}, 
    ] 
} 

但集群中有多个服务器,客户端不知道连接到哪个服务器,因为这是负载均衡器的工作,则出现问题,user1和user2应该在同一个房间中,但它们可能会连接到不同的服务器。

我该怎么办?

回答

1

您需要使用RedisStore配置您的服务器。在这里看看更多的信息:https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO#server

+0

谢谢,我配置了一个redis商店的服务器,它的作品很好! – manbu 2013-05-17 09:24:49

+0

我现在已经做了一个redis服务器集群,我可以在redis.on('end')事件中找到redis服务器的连接,但是我想将存储redis服务器连接切换到集群中的其他服务器,我该怎么办? – manbu 2013-05-17 10:00:38

+0

重做'io.set('store',...)'与另一个RedisStore实例不起作用吗? 否则最好的可能是使用您的负载平衡器。 – Sylvain 2013-05-17 12:37:50