Estoy usando un middleware que valida el token JWT de
socket.handshake.auth.tokenDespués de validar el token, agrego al usuario en la variable de socket de esta manera
socket.user = userTengo una función que busca a todos los usuarios conectados usando la variable io.
const getAllUsers = () => { const connectedSockets = Array.from(io.sockets.sockets.values()); const connectedUsers = connectedSockets.map((socket) => socket.user); console.log(connectedUsers); return connectedUsers; };Pero el problema es que no puedo acceder a esta variable io en mi middleware. El middleware solo tiene acceso a un socket y la siguiente variable. ¿Hay alguna manera de acceder a la variable io en mi middleware? ¿O obtener todos los enchufes conectados de alguna otra manera?
OBJETIVO:
Quiero ver si el mismo usuario está intentando conectarse con un enchufe diferente. Y si lo está, bloquea la conexión. Por lo tanto, necesito una matriz de todos los usuarios conectados.
¿Hay alguna otra forma de implementar esta lógica sin un middleware?
MEDIO AMBIENTE
const protectSocket = async (socket, next) => { const token = socket.handshake.auth.token; if (token) { try { const decoded = jwt.verify(token, process.env.JWT_SECRET); //get user from token socket.user = await User.findById(decoded.id).select("-password"); return next(); } catch (err) { console.log(err); return next(new Error(err)); } } else { return next(new Error("Token is missing")); }