Le fichier readme de Socket.io contient l'exemple suivant:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.join('justin bieber fans');
socket.broadcast.to('justin bieber fans').emit('new fan');
io.sockets.in('rammstein fans').emit('new non-fan');
});
Quelle est la différence entre socket.broadcast.to()
et io.sockets.in()
?
Réponses:
socket.broadcast.to
diffuse vers toutes les prises de la pièce donnée, à l' exception de la prise sur laquelle il a été appelé tandis que laio.sockets.in
diffusion vers toutes les prises de la pièce donnée.la source
Node.js était quelque chose qui m'intéressait vraiment pendant tout ce temps et je l'ai utilisé dans l'un de mes projets pour créer un jeu multijoueur.
io.sockets.in().emit()
etsocket.broadcast.to().emit()
sont les deux principales méthodes d'émission que nous utilisons dans les salles de Socket.io ( https://github.com/LearnBoost/socket.io/wiki/Rooms ) Les salles permettent un partitionnement simple des clients connectés. Cela permet d'émettre des événements avec des sous-ensembles de la liste de clients connectés, et donne une méthode simple pour les gérer.Ils nous permettent de gérer les sous-ensembles de la liste des clients connectés (que nous appelons rooms) et ont des fonctionnalités similaires comme les fonctions principales socket.io
io.sockets.emit()
etsocket.broadcast.emit()
.Quoi qu'il en soit, je vais essayer de donner les exemples de codes avec les commentaires pour expliquer. Voyez si cela aide;
Socket.io chambres
i) io.sockets.in (). emit ();
ii) socket.broadcast.to (). emit ();
Socket.io
i) io.sockets.emit ();
ii) socket.broadcast.emit ();
À votre santé
la source
Mise à jour 2019 : socket.io est un module spécial qui utilise des websockets, puis revient à l'interrogation des requêtes http. Pour les websockets uniquement: pour le client, utilisez les websockets natifs et pour node.js, utilisez ws ou cette bibliothèque.
Exemple simple
La syntaxe est déroutante dans socketio. De plus, chaque socket est automatiquement connecté à sa propre salle avec l'identifiant
socket.id
(c'est ainsi que le chat privé fonctionne dans socketio, ils utilisent des salles).Envoyer à l'expéditeur et à personne d'autre
Envoyer à tout le monde, y compris l'expéditeur (si l'expéditeur est dans la salle) dans la salle "ma chambre"
Envoyer à tout le monde sauf l'expéditeur (si l'expéditeur est dans la salle) dans la salle "ma chambre"
Envoyer à tout le monde dans chaque pièce , y compris l'expéditeur
Envoyer à une socket spécifique uniquement (chat privé)
la source
otherSocket.on('connect',()=> { console.log(otherSocket.id); });
la source
Dans Socket.IO 1.0, .to () et .in () sont identiques. Et d'autres dans la salle recevront le message. Le client l'envoie ne recevra pas le message.
Vérifiez le code source (v1.0.6):
https://github.com/Automattic/socket.io/blob/a40068b5f328fe50a2cd1e54c681be792d89a595/lib/socket.js#L173
la source
.to()
et,in
sont les mêmes, alors que se passerait-il lorsque je créerais une pièce avec exactement le même nom que l'identifiant d'une socket. Que feraitsocket.broadcast.to(socketid)
par exemple alors?