2012-05-22 9 views
0

Je développe un petit projet en utilisant Node.js. J'utilise mongoose pour les modèles, donc j'utilise MongoDb. Et je garde des sessions au MongoStore. Aussi je veux utiliser socket.io en cours d'exécution de plusieurs processus de noeud. De socket.io docs:nœud js utilisant simultanément Mongo et 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. 

donc je pense que j'ai besoin Redis aussi. Je suis nouveau dans Node et je veux savoir - est-il normal d'utiliser deux bases de données pour gérer différentes parties de l'application. Ou est-il un moyen de travailler avec socket.io lors de l'exécution de plusieurs processus de nœud et utiliser uniquement MongoDb

Répondre

4

Tout récemment, une solution qui utilise MongoStore avec des fonctionnalités de publication/utilisant mubsub (Pub/sous pour Node.js et MongoDB) est apparu .

Il peut être attaché à Socket.IO presque de la même manière que vous le feriez avec RedisStore:

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

Plus d'informations et de la source à: https://github.com/kof/socket.io-mongo

+0

gentil, merci! –

+1

Sur une note de côté, je n'ai pas réussi à le faire fonctionner avec de multiples processus en cours d'exécution, il a gardé handshaking. Donc, si vous l'avez fait fonctionner, s'il vous plaît faites le moi savoir! –

2

Le magasin Redis est déjà intégré dans Socket.IO, mais il a surtout 2 caractéristiques importantes qui sont particulièrement nécessaires pour Socket.IO:

1) publish-subscribe (pour communiquer entre les processus)
2) magasin valeur clé (pour stocker toutes les informations sur les connexions)

Alors que la partie du magasin clé-valeur peut être fait avec MongoDB, il ne fournit pas la fonctionnalité pub-sub.

Ligne de fond, SI vous avez besoin d'évoluer au-delà d'un processus (ce qui signifie que vous attendez plus de quelques milliers de requêtes simultanées) que RedisStore est la solution.

Ressources:

Questions connexes