Je souhaite "émettre" un message à un client particulier sélectionné en fonction d'un autre message reçu sur un autre client. Comment procéder?
Je songe à joindre chaque client à sa propre "salle" puis à le diffuser. Y a-t-il un meilleur moyen?
UPDATE pour socket.io version 1.0 et supérieure
io.to(socketid).emit('message', 'whatever');
Pour l'ancienne version:
Vous pouvez stocker chaque client dans un objet en tant que propriété. Ensuite, vous pouvez rechercher le socket en fonction du message:
var basket = {};
io.sockets.on('connection', function (socket) {
socket.on("register", function(data) {
basket[data.nickname] = socket.id;
});
socket.on("privmessage", function(data){
var to = basket[data.to];
io.sockets.socket(to).emit(data.msg);
});
});
Pas testé ... mais ça devrait vous donner une idée
Pour socket.io version 1.0, utilisez:
io.to(socketid).emit('message', 'whatever');
Émettre à un client particulier en utilisant un socketID.
Serveur/package: socket.io:
io.to(socketID).emit('testEvent', 'yourMessage');
Client/package socket.io-client:
io.sockets.on('connection',(socket) => {
socket.on("testEvent", data => {
console.log(data);
});
});
Vous pouvez obtenir un accès au socketID de la manière suivante:
io.on('connection', (socket, next) => {
const ID = socket.id // id property on the socket Object
})
C'est simplement une propriété sur l'objet socket