Есть функция статуса пользователя, online/offline. Эти статусы передаются по сокетам, то есть если собеседник подключается по каналу, ему статус меняется, если отключается то статус оффлайн.
Сейчас работает данная функция с одной проблемой, если собеседник перезагрузит страницу его статуст сначала станет оффлайн потом онлайн, то есть это бессмысленная трата ресурсов, если один пользователь куда не шло, если 1000 то постоянно будет идти dispatch на удаление/добавление статуса. Как можно поставить таймер на удаление, что бы допустим если пользователь ушел, то его статус через 5 минут только стал оффлайн допустим. А не при любой перезагрузке старнице собеседника прыгал.
Код функции ниже
listenOnlineUsers(conversation) {
for (let i = 0; i < conversation.members.length; i++) {
let member = conversation.members[i];
if (member.id == this.props.user.id) continue;
let channel = 'IsOnline.' + member.id;
// this.leaveChannel(channel);
Echo.join(channel)
// все пользователи в канале
.here((users) => {
for (let i = 0; i < users.length; i++) {
if (users[i].id != this.props.user.id) {
if (!this.props.onlineUserIds.includes(users[i].id)) {
this.props.pushOnlineUserId(users[i].id)
}
}
}
})
// просоединившийся пользователь
.joining((user) => {
if (this.props.onlineUserIds.includes(user.id)) return
this.props.pushOnlineUserId(user.id)
})
// ушедший
.leaving((user) => {
if (!this.props.onlineUserIds.includes(user.id)) return
this.props.removeOnlineUserId(user.id)
});
}
}