Взгляд клиента на каждого, кто смотрит на веб-страницу - PullRequest
1 голос
/ 18 сентября 2008

Прежде всего позвольте мне сказать, что я действительно чувствую бессмысленность в этом вопросе. Я использую встроенную безопасность Windows, и я могу использовать vb.net для поиска информации о пользователе из AD. У меня также есть другая информация о пользователях, которую я могу найти на сервере MS SQL 2005, получив имя для входа в систему.

Я хотел бы отобразить информацию обо всех пользователях, активно просматривающих веб-страницу, любому из пользователей, просматривающих веб-страницу. Информация поступает как из AD, так и из SQL, и у меня нет проблем с ее получением.

Мой маршрут до сих пор использовал SQL для хранения, когда пользователь впервые загружает страницу. Я застрял, не зная, как показать, когда пользователь покидает страницу. Я попытался использовать таймер ajax, чтобы обновлять временную метку для посещения пользователя каждую секунду, что также приводит к тому, что таблица меняет статус на неактивный для любой записи, которая не обновлялась в течение 5 секунд. Это работает только с несколькими пользователями, но я нахожу, что когда у меня больше, чем несколько человек, просматривающих страницу, 1-секундное обновление не является надежным. У меня также, кажется, возникают проблемы, когда пользователь сворачивает страницу. Это иногда останавливает обновления из таймера ajax и выводит пользователя из списка, пока он все еще просматривает страницу.

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

Ответы [ 6 ]

2 голосов
/ 18 сентября 2008

Ответ, вероятно, зависит от того, насколько точным должен быть дисплей. Если бы просто дать пользователям представление о других людях, использующих сайт, я бы предложил нечто похожее на то, что вы описали, но с частотой обновления:

  • при запросе страницы связать пользователя со страницей (и отметкой времени)
  • используйте таймер Ajax для обновления отметки времени каждую минуту или около того
  • уничтожить ассоциацию с помощью события window.onbeforeunload (или аналогичного)
  • Предположим, что все отметки времени старше минуты (и немного) мертвы

Вы можете попытаться уловить некоторые способы, с помощью которых люди покидают страницу, но это никогда не является пуленепробиваемым. А касаемо свернутой страницу, я предполагаю, что это спорно ли они на самом деле просмотр страницу;)

1 голос
/ 18 сентября 2008

Как насчет того, чтобы на странице было крошечное флэш-приложение, которое транслирует крошечный «сердцебиительный» поток данных с сервера ... достаточно, чтобы сервер мог знать, когда поток был отброшен и, следовательно, когда клиент ушел со страницы.

1 голос
/ 18 сентября 2008

Я не думаю, что иметь AJAX-запрос каждую секунду - это хорошая идея, это слишком болтливо.

Я думаю, что большинство людей реализуют эту функцию, просто записывая, когда кто-то делает запрос на сайт, и с этого времени threshold пользователь «посещает» сайт. Если пользователь не сделает еще один запрос к серверу до достижения threshold, тогда мы предполагаем, что он перешел.

1 голос
/ 18 сентября 2008

Я думаю, что лучшее, что вы можете сделать, это установить порог для «посещения страницы». Запускайте автоматическое задание каждые 60, 120, 300 или через некоторое количество секунд, которое очищает любую запись, которая старше указанного периода времени. Нет никакого способа надежно определить (о чем я знаю), когда пользователь покидает страницу. Лучшее, что вы можете сделать, это «предположить», что пользователь прекратил пользоваться сайтом, если прошло определенное время. Таким образом, вы сохраняете пользователя, страницу и время просмотра. Как только время просмотра превысит ваш порог, удалите его.

0 голосов
/ 21 января 2010

Первый ответ работает.

НО ...

Вы не упомянули, что пользователи вошли в систему, поэтому я подозреваю, что это не то, на что вы смотрите. Хотя вы, безусловно, можете упростить ситуацию, если просто запрашиваете список зарегистрированных пользователей каждую минуту или около того.

0 голосов
/ 18 сентября 2008

Для тела есть скрипт onunload:

В этом сценарии отправьте ajax-вызов, чтобы сказать, что пользователь покинул страницу.

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