// Initialize an object to keep track of active users
const activeUsers = {};
// Define the setupSocket function to handle socket events
const setupSocket = (io) => {
io.on('connection', (socket) => {
console.log('A user connected:', socket.id);
// Listen for the 'online' event to add a user
socket.on('online', (data) => {
const { user } = data;
if (user) {
activeUsers[socket.id] = user; // Add user to activeUsers
console.log(`User joined: ${user}`);
}
// Broadcast the updated active user list to all clients
io.emit('activeUsers', Object.values(activeUsers));
});
// Listen for the 'offline' event to remove a user
socket.on('offline', (data) => {
const user = activeUsers[socket.id];
delete activeUsers[socket.id]; // Remove the user from activeUsers
console.log(`${user} is logged out!!`);
// Broadcast the updated active user list to all clients
io.emit('activeUsers', Object.values(activeUsers));
});
// Handle disconnections and remove user
socket.on('disconnect', () => {
const user = activeUsers[socket.id];
delete activeUsers[socket.id]; // Remove user from activeUsers