Вести список активных пользователей для Интернета - PullRequest
0 голосов
/ 19 апреля 2010

Постановка проблемы - Хотелось бы узнать, активен ли конкретный пользователь веб-приложения (то есть вошел в систему и использует сайт) и сможет ли он запрашивать список активных пользователей или определять статус активности пользователя.

Ограничения - Точность не требуется (то есть, если пользователь был активен в течение определенного периода времени, можно сказать, что он активен, даже если он закрыл свой браузер).

Я чувствую, что должен быть шаблон проектирования для такого типа проблемы, но я не смог найти что-либо здесь или в другом месте в Интернете.

Подходы, которые я рассматриваю:

  1. Поддерживать таблицу, которая обновляется каждый раз, когда пользователь выполняет действие (или некоторое подмножество действий). Затем будет запрашивать пользователей, которые выполнили действие в течение некоторого порога времени.

  2. Попробуйте отслеживать информацию о сеансе и вести таблицу, в которой перечислены зарегистрированные пользователи и время ожидания по истечении определенного периода времени.

  3. Какой-нибудь другой, более стандартный способ сделать это?

Как бы вы подошли к этой проблеме (опять же, с точки зрения шаблона проектирования)?

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 апреля 2010

У вас будет гораздо больше везения, если вы будете поддерживать его с точки зрения компонента или модуля, а не таблицы. На мой взгляд, вам нужны следующие интерфейсы.

public interface IActiveUsers {
  bool IsUserActive(User u);
}
public interface ITrackActiveUsers {
  void MarkUserAsActive(User u);
}

Вы можете реализовать их, используя базу данных, но почему бы просто не использовать встроенный кеш выбранной веб-платформы?

В основном, когда пользователь помечается как активный, вставьте ключ в кэш с ключом, подобным «LoggedInUser-1234», где 1234 - это уникальный идентификатор пользователя. Затем просто установите время ожидания для всего, что вы хотите (5 минут, 10 и т. Д.) И значение true. Затем, при запросе, активен ли пользователь, просто проверьте, содержит ли кэш истинное значение для того же ключа.

0 голосов
/ 20 апреля 2010

Я думаю, что # 1 - адекватное решение для вашей проблемы, и я думаю, что это также распространенное решение. Он позволяет вам решить, какие HTTP-запросы вы считаете пользователем «активным» (то есть решить, когда и нужно ли обновлять таблицу «последняя активность») и / или классифицировать действия (имеющие больше столбцов «последняя активность XXX») и обновить каждый из их после того, как пользователь выполняет другое действие).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...