Задать вопрос
@1programmer

Как можно выставить таймер на статус пользователя?

Есть функция статуса пользователя, 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)
        
        });
    }
  }
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽