2012-05-22 37 views
0

我正在開發一個使用Node.js的小項目。我爲模型使用mongoose,因此我使用的是MongoDb。我保留在MongoStore的會議。另外我想用socket.io運行Node的幾個進程。從socket.io文檔:節點js使用Mongo和Redis巧妙地使用

The MemoryStore only allows you deploy socket.io on a single process. 
If you want to scale to multiple process and/or multiple servers 
you can use our RedisStore which uses the Redis 
NoSQL database as man in the middle. 

所以我想我需要Redis了。我是Node新手,我想知道 - 使用兩個數據庫管理應用程序的不同部分是正常的。還是有辦法與socket.io一起工作時運行幾個節點的進程,只使用MongoDb

回答

4

就在最近使用mubsub(於Node.js和MongoDB發佈/訂閱)使用MongoStore與發佈/訂閱功能的解決方案已經出現。

它可以連接到socket.io幾乎以同樣的方式,你會與RedisStore:

io.configure(function() { 
    io.set('store', new MongoStore({host: 'localhost', port: 27017, db:'session_db'})); 
}); 

更多信息和源在:https://github.com/kof/socket.io-mongo

+0

不錯,謝謝! –

+1

在附註上,我沒有設法讓它在多個進程運行的情況下工作,它保持握手。所以,如果你有它的工作,請讓我知道! –

2

Redis存儲已經內置到Socket.IO,但更重要的是有2個重要的功能,特別是需要的Socket.IO:

1)發佈 - 訂閱(進程間通信)
2)鍵值存儲(存儲所有有關連接的信息)

雖然鍵值存儲部分可以與MongoDB中進行,它不提供pub-sub功能。底線,如果您需要擴展超過一個進程(意味着您期望超過幾千個併發請求),那麼RedisStore就是解決方案。

資源: