archivo index.js
var users = []; let addUser = (userId, socketId) => { !users.some((user) => user.userId === userId) && users.push({ userId, socketId }); }; let removeUser = (socketId) => { users = users.filter((item) => item.socketId !== socketId); }; const getUser = (userId) => { console.log("inside function", users); return users.find((item) => item.userId === userId); }; io.on("connection", (socket) => { socket.on("addUser", async (userId) => { await addUser(userId, socket.id); io.emit("getUsers", users); console.log(users) // print array of users like this // [{userId:'userId',socketId: 'socket id'}] }); socket.on("disconnect", () => { removeUser(socket.id); io.emit("getUsers", users); }); }); const socketIoObject = io; const usersInObject = users; module.exports.ioObject = { socketIoObject, usersInObject };archivo del controlador
exports.createNotifications = async (req, res) => { try { const { userId, title, type = "default", isPublic } = req.body; if (!title) { return res.status(401).send("Data is required"); } const notification = await notificationsModel.create({ userId, title, type, isPublic: userId ? false : true, }); console.log("socket", socket.ioObject.usersInObject); // return empty // array [] !!!! return res.status(200).send("sent"); } catch (err) { return res.status(400).send(err.message); } };por qué no puedo obtener la lista de usuarios en el controlador, ¡obtuve una matriz vacía!
Necesito compartir la lista de usuarios en todos los archivos para poder obtener al usuario mediante la función getUser para obtener el socketId de un usuario específico para poder enviarle una notificación.
Tal vez, importas socket en el archivo del controlador incorrect