¿Cuál es la diferencia entre estos dos?
Noté que si cambiaba de socket.emita socket.sendun 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.emita 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.emito socket.send?

socket.sendes simplemente un alias parasocket.emit('message', message);Simple y preciso (Fuente: grupo de google Socket.IO ):
socket.emitle permite emitir eventos personalizados en el servidor y el clientesocket.sendenví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.sendestá implementado para compatibilidad con la interfaz vanilla WebSocket.socket.emites una característica de Socket.IO solamente. Ambos hacen lo mismo, perosocket.emites 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