Pour envoyer quelque chose à tous les clients, vous utilisez:
io.sockets.emit('response', data);
Pour recevoir des clients, vous utilisez:
socket.on('cursor', function(data) {
...
});
Comment puis-je combiner les deux pour que lors de la réception d'un message sur le serveur à partir d'un client, j'envoie ce message à tous les utilisateurs sauf celui qui envoie le message?
socket.on('cursor', function(data) {
io.sockets.emit('response', data);
});
Dois-je le pirater en envoyant l'ID client avec le message puis en vérifiant du côté client ou existe-t-il un moyen plus simple?
javascript
node.js
socket.io
switz
la source
la source
io
here.onlysocket
// sending to all clients except sender
quoi utiliser// sending a response to sender client only
?socket.to('others').emit('an event', { some: 'data' });
également dans une pièce.De la réponse @LearnRPG mais avec 1.0:
Pour répondre au commentaire @Crashalot,
socketid
vient de:la source
socketid
envoi vers une prise individuelle?socket.id
partir de votre objet socket.Voici une réponse plus complète sur ce qui est passé de 0.9.x à 1.x.
Je voulais modifier le post de @soyuka mais ma modification a été rejetée par un examen par les pairs.
la source
broadcast.emit envoie le msg à tous les autres clients (à l'exception de l'expéditeur)
la source
Emis cheatsheet
la source
Pour les espaces de noms dans les pièces, la liste des clients dans une pièce en boucle (similaire à la réponse de Nav) est l'une des deux seules approches que j'ai trouvées qui fonctionneront. L'autre consiste à utiliser exclure. PAR EXEMPLE
la source
Autres cas
la source
Mise à jour de la liste pour plus de documentation.
J'espère que cela t'aides.
la source
utiliser ce codage
ce socket.broadcast.emit () émettra tout dans la fonction sauf sur le serveur qui émet
la source
io
intérieur si le rappel est défini dans le fichier anthèreio
comme globalJ'utilise des espaces de noms et des pièces - j'ai trouvé
travailler où
n'a pas
(si quelqu'un d'autre fait face à ce problème)
la source