2013-05-14 92 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