вызывается раз в секунду и каждую секунду делать декримент времени для каждого пользователя? В случае, если пользователь проявил активность, ставить время на 60.
Хорошая идея или не очень? Это вопрос от новичка в JS.
Не очень, куча лишних действий ещё и цикл по всем пользователям
Просто сделай const statusTimeouts = new Map(); Где-то глобально. И ставь типа statusTimeouts.set(userId, setTimeout...) А перед установкой if statusTimeouts.has(userId) { clearTimeout(statusTimeouts.get(userId); }
Но я бы вообще статусы не хранил если это не очень нагруженный проект
В итоге так и сделал. Каждые 2 скеунды прохожу по всем пользователям, уменьшаю "время до статуса оффлайн" и при необходимости обновляю им статус. 2 секунды - нормально, пользователей немного. При наблюдении активности пользователя переназначаю время.
Обсуждают сегодня