Quelle est la différence entre ces deux?
J'ai remarqué que si je passais de socket.emit
à socket.send
dans un programme de travail, le serveur ne recevait pas le message, même si je ne comprends pas pourquoi.
J'ai également remarqué que dans mon programme, si je passe de socket.emit
à socket.send
, le serveur reçoit un message, mais il semble le recevoir plusieurs fois. Quand j'utilise console.log()
pour voir ce que le serveur a reçu, cela montre quelque chose de différent de quand j'utilise socket.emit
.
Pourquoi ce comportement? Comment savez-vous quand utiliser socket.emit
ou socket.send
?
socket.send
c'est simplement un alias poursocket.emit('message', message);
Simple et précis (Source: groupe google Socket.IO ):
socket.emit
vous permet d'émettre des événements personnalisés sur le serveur et le clientsocket.send
envoie les messages reçus avec l''message'
événementla source
TL; DR:
socket.send(data, callback)
équivaut essentiellement à appelersocket.emit('message', JSON.stringify(data), callback)
Sans regarder le code source, je suppose que la fonction d'envoi est plus efficace edit: pour l'envoi de messages string, au moins ?
Donc ouais, émettre vous permet d'envoyer des objets, ce qui est très pratique.
Prenons cet exemple avec
socket.emit
:et pour ceux qui tiennent le score à la maison, voici à quoi cela ressemble en utilisant
socket.send
:la source
socket.send
est implémenté pour la compatibilité avec l'interface WebSocket vanilla.socket.emit
est une fonctionnalité de Socket.IO uniquement. Ils font tous les deux la même chose, maissocket.emit
c'est un peu plus pratique pour gérer les messages.la source
Dans les systèmes de communication bidirectionnels de base, socket.emit s'est avéré plus convaincant et facile à utiliser (expérience personnelle) et fait partie de Socket.IO qui est principalement conçu à ces fins.
la source
https://socket.io/docs/client-api/#socket-send-args-ack
socket.send
// Envoie un événement de messagesocket.emit(eventName[, ...args][, ack])
// vous pouvez personnaliser eventNamela source