La conclusión es que necesito obtener una serie de personas que ingresaron al servidor (el nombre se ingresa antes de ingresar al sitio). Lo implemente muy mal, del lado del cliente creo un arreglo y del lado del servidor el mismo arreglo y se transfieren entre si, pero el problema es que el arreglo creado del lado del cliente se llena solo en solicitudes al servidor , es decir, en el ámbito local, para mí necesitas acceder a él globalmente. Aquí está la implementación: parte del cliente:
const userName = prompt("Enter your name:"); nameBlock.innerHTML = userName; let arrayUser = []; // array of users socket.emit('connect user', { userConnect: userName, // pass the name arrayConnect: arrayUser // we pass the array where we write the names }); socket.on('connect user', (userName) => { arrayUser.push(userName.arrayConnect); const item = document.createElement('div'); item.innerHTML = `User <b><span class = "user">${userName.name}</span></b> connected to the chat!` userConnect.append(item); });Parte del servidor:
let arrayUser = []; // create an array io.on('connection', (socket) => { socket.on('chat message', (msg) => { io.emit('chat message', { message: msg.message, name: msg.name }); }); socket.on('connect user', (userName) => { arrayUser.push(userName.userConnect); console.log(arrayUser); io.emit('connect user', { name: userName.userConnect, arrayConnect: arrayUser }); });