¿Cuál es la diferencia entre estos dos?socket.emit() vs. socket.send()
Me di cuenta de que si cambiaba de socket.emit
a socket.send
en un programa en funcionamiento, el servidor no recibía el mensaje, aunque no entiendo por qué.
También noté que en mi programa si cambiaba de socket.emit
a socket.send
, el servidor recibe un mensaje, pero parece que lo recibe varias veces. Cuando uso console.log()
para ver lo que el servidor recibió, muestra algo diferente de cuando uso socket.emit
.
¿Por qué este comportamiento? ¿Cómo sabe cuándo usar socket.emit
o socket.send
?
No parece una gran diferencia. Se ve como socket.emit() puede hacer todo lo que socket.on() puede. ¿Por qué tenían que hacer esa función? –
No sé, revisé el código fuente y hacen casi lo mismo (https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L318). Tal vez es histórico y solo por compatibilidad con versiones anteriores. – Charles
socket.io hace que emitir() haga algo diferente a lo que hace EventEmitter's emit() es desconcertante, ¿no? Es un protocolo en la parte superior de los pseudosockets en bruto que aparecen como eventos denominados en el lado opuesto, en lugar de mensajes sin formato. Le permite usar un solo socket para múltiples transmisiones, en cierto sentido, multiplexarlas. – aredridel