Проверка пользователя online/offline socket.io?

Для проверки статуса пользователя (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. Однако вы можете расширить эту функциональность и добавить другие функции, такие как проверка активности пользователя (например, получение времени последнего взаимодействия пользователя с сервером) или оповещение других пользователей о состоянии пользователя.