Sails.js + socket.io: l'Envoi de messages à partir du serveur vers les clients
Je suis d'essayer de mettre en place un système avec sails.js d'avoir le serveur de diffusion de messages à un ensemble de clients. En gros:
- Un client dans le Groupe A envoie une requête AJAX vers le serveur.
- Le serveur traite la requête et envoie un message par l'intermédiaire de la douille à tous les clients du Groupe B.
- Les clients du Groupe B recevoir le message à travers le support et l'afficher quelque chose.
Selon le support.io de la documentation, je devrais être en mesure d'avoir les clients dans le Groupe B de participer à une "chambre", et ensuite le serveur de diffusion à cette pièce spécifique, mais sur le côté client, le préexistante "socket" n'ont pas la méthode du "socket.join ("room")". Donc, j'ai essayé tout à l'envoi d'un événement unique pour tous les clients:
socket.on("connect", function(){
console.log("Client Connected");
});
socket.on("my_event", function(data){
console.log("my_event received");
});
Cela fonctionne bien en faisant des "voiles.io.les sockets.émettre("my_event", {...})" sur le côté serveur, mais n'est-ce pas l'envoi de l'événement à chaque client? Je pourrais prendre le nom de l'événement unique, quelque chose comme "my_event_000" avec un ID pour spécifier le groupe, mais ce serait encore l'envoi d'événements à chaque client inutilement.
Dois-je utiliser "chambres"? Et si oui, comment?
OriginalL'auteur mezzanine.ak | 2013-09-06
Vous devez vous connecter pour publier un commentaire.
Les Voiles façon de le faire serait d'avoir un modèle de sauvegarde de votre "Groupes", et dans une action de contrôleur ont un socket de s'abonner à un groupe avec
Group.subscribe(groupId, req.socket)
. Ensuite, vous pouvez envoyer des messages à un groupe spécifique avecGroup.publish(groupId, data)
.Vous pouvez également vous abonner à un arbitraire nom de la salle dans un contrôleur à l'aide
req.listen(groupId)
, et à la diffusion de cette pièce avecreq.broadcast(roomName, data)
.C'est tout dans les Les voiles de la documentation pour le travail avec les Sockets!
Le groupe est le nom du modèle dans l'exemple. Dans les docs ils sont répertoriés comme
Model.subscribe
,Model.publish
, etc.OriginalL'auteur sgress454