@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)
        
        });
    }
  }
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы