2017-02-06 1 views
0

Folks, Est-il possible de créer un tableau basé sur une session ou dans memorydb ou toute autre technique permettant de créer un pool de données pouvant être partagé entre tous les clients. Fondamentalement, je dois faire une application de chat basée sur socket.io, qui garde les pistes de tous les utilisateurs connectés. Il pousse ce tableau d'utilisateurs connectés vers tous les clients ou tout nouveau client. Appréciez votre aide.Express, données partagées pour tous les clients connectés

Répondre

1

Vous devez configurer Socket.IO-Redis ou adaptateur prise-io-mongodb avec votre prise-io

Pour l'envoi de la liste des utilisateurs en ligne au client, vous pouvez créer un document dans MongoDB ou Redis ou mySQL. Lorsque jamais socket.on (« connexion ») est triggerd chercher l'ID utilisateur de l'aide

var userId = socket.request.user.id; 
var socketId = socket.id; 

et l'enregistrer dans la base de données.

Chaque fois que le socket se déconnecte, supprimez-le de la base de données.

Lorsque le client se connecte et demande aux utilisateurs en ligne de le récupérer dans la base de données et d'exécuter io.sockets.connected [socketId] sur chaque socket pour vérifier si le socket est encore connecté et renvoyer la liste au client.

https://github.com/socketio/socket.io-redis https://www.npmjs.com/package/socket.io-mongodb