2012-05-22 34 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就是解决方案。

资源: