Difundiendo el mensaje
Nuestro servidor ya recibe los mensajes, ahora tenemos que difundirlos a los clientes conectados para mostrarlos en el chat, esto es lo que se conoce como hacer un "broadcast" del mensaje.
Para hacer una difusión global lo haremos a nivel del servidor y no del socket del cliente con un evento que podemos llamar difundir_mensaje:
server.js
socket.on('nuevo_mensaje', (message) => {
// Dinfundimos el mensaje a todos los clientes
io.sockets.emit('difundir_mensaje', message)
})
Ahora tenemos que capturar este evento en el cliente, recuperar el objeto message recibido y mostrarlo:
public/index.html
// Recuperamos el mensaje y lo añadimos al HTML
socket.on('difundir_mensaje', function(message) {
$("#chat")
.append(`
<b>${message.name}</b>
${message.content}<br>`)
})
¡Listo! Por increíble que parezca con esto tenemos un protitpo completamente funcional, probad a abrir varias ventanas y hablar con diferentes nombres.
Sin embargo no quiero dejar el chat como está, creo que es una buena oportunidad para analizar algunos problemas que existen a niel de cliente y solucionarlos.