Для проверки статуса пользователя (online / offline) в приложении Node.js с использованием библиотеки socket.io вам понадобится реализовать функциональность слежения за состоянием каждого подключившегося пользователя.
Сначала необходимо настроить сервер socket.io и установить соответствующие обработчики событий. Вам понадобится создать экземпляр сервера socket.io и добавить его слушатель на порту, чтобы прослушивать входящие подключения:
const io = require('socket.io')(server); // Обработчик события подключения нового пользователя io.on('connection', (socket) => { console.log('Новый пользователь подключился'); // Обработчик события отключения пользователя socket.on('disconnect', () => { console.log('Пользователь отключился'); }); });
Теперь, когда пользователь подключается к серверу, вы можете отслеживать его статус (online / offline) в обработчике события подключения и отключения.
Есть несколько способов реализации проверки статуса пользователя. Один из них - использовать переменную, в которой будет храниться список подключенных пользователей. При каждом новом подключении пользователь будет добавляться в этот список, и при отключении - удаляться:
const connectedUsers = {}; io.on('connection', (socket) => { console.log('Новый пользователь подключился'); // Добавить пользователя в список подключенных connectedUsers[socket.id] = { id: socket.id, // Другие данные пользователя, которые вы хотите отслеживать }; // Обработчик события отключения пользователя socket.on('disconnect', () => { console.log('Пользователь отключился'); // Удалить пользователя из списка подключенных delete connectedUsers[socket.id]; }); });
Теперь вы можете получить список всех подключенных пользователей с их данными, включая состояние (online / offline), в любой момент времени:
// Получить список всех подключенных пользователей const users = Object.values(connectedUsers); // Получить только пользователей с состоянием online const onlineUsers = users.filter((user) => user.online); // Получить только пользователей с состоянием offline const offlineUsers = users.filter((user) => !user.online);
Это основной принцип реализации проверки состояния пользователя (online / offline) с использованием socket.io в Node.js. Однако вы можете расширить эту функциональность и добавить другие функции, такие как проверка активности пользователя (например, получение времени последнего взаимодействия пользователя с сервером) или оповещение других пользователей о состоянии пользователя.