¿Cuál es la diferencia entre estos dos?
Noté que si cambiaba de socket.emit
a socket.send
un programa de trabajo, el servidor no recibía el mensaje, aunque no entiendo por qué.
También noté que en mi programa si cambié de socket.emit
a socket.send
, el servidor recibe un mensaje, pero parece recibirlo varias veces. Cuando uso console.log()
para ver lo que recibió el servidor, muestra algo diferente de cuando lo uso socket.emit
.
¿Por qué este comportamiento? ¿Cómo sabes cuándo usar socket.emit
o socket.send
?
socket.send
es simplemente un alias parasocket.emit('message', message);
Simple y preciso (Fuente: grupo de google Socket.IO ):
socket.emit
le permite emitir eventos personalizados en el servidor y el clientesocket.send
envía mensajes que se reciben con el'message'
eventofuente
TL; DR:
socket.send(data, callback)
es esencialmente equivalente a llamarsocket.emit('message', JSON.stringify(data), callback)
Sin mirar el código fuente, supongo que la función de envío es una edición más eficiente : ¿al menos para enviar mensajes de cadena ?
Así que, básicamente, emitir le permite enviar objetos, lo cual es muy útil.
Tome este ejemplo con
socket.emit
:y para aquellos que llevan la cuenta en casa, esto es lo que parece usar
socket.send
:fuente
socket.send
está implementado para compatibilidad con la interfaz vanilla WebSocket.socket.emit
es una característica de Socket.IO solamente. Ambos hacen lo mismo, perosocket.emit
es un poco más conveniente en el manejo de mensajes.fuente
En los sistemas básicos de comunicación bidireccional, socket.emit ha demostrado ser más convincente y fácil de usar (experiencia personal) y es parte de Socket.IO, que está construido principalmente para tales fines.
fuente
https://socket.io/docs/client-api/#socket-send-args-ack
socket.send
// Envía un mensaje de eventosocket.emit(eventName[, ...args][, ack])
// puedes personalizar eventNamefuente