1

首先让我说,我在这个问题上真的感到无方向。我正在使用 windows 集成安全,我可以使用 vb.net 从 AD 中查找有关用户的信息。我还有其他关于用户的信息,我可以通过获取登录身份名称从 MS SQL 2005 服务器中查找。

我想做的是向任何一个查看网页的用户显示有关所有积极查看网页的用户的信息。信息来自 AD 和 SQL,我可以毫无问题地检索它。

到目前为止,我的路线一直使用 SQL 来存储用户首次加载页面的时间。我不知道如何在用户离开页面时显示。我尝试使用 ajax 计时器每隔一秒更新一次用户访问的时间戳,这也会触发表将状态更改为未在 5 秒内更新的任何记录的非活动状态。这仅适用于少数用户,但我发现当我有超过几个人查看该页面时,1 秒更新是不可靠的。当用户最小化页面时,我似乎也有问题。这有时会停止来自 ajax 计时器的更新,并在用户仍在查看页面时将其踢出列表。

此功能对其所在站点的功能并不重要,因此一年多前我就放弃了它。从那时起,我真的很痛苦,我想不出办法来完成这项工作。我的搜索使我走上了许多徒劳无功的道路,因此我真的很感激可以提供的任何帮助,即使它只是朝着正确方向前进的线索。

4

6 回答 6

2

答案可能取决于您需要显示的准确度。如果只是为了让用户了解其他人在使用该网站,我会建议类似于您所描述的内容,但会在更新频率上有所退让:

  • 在页面请求上将用户与页面(和时间戳)相关联
  • 使用 Ajax 计时器每分钟左右更新时间戳
  • 通过 window.onbeforeunload 事件(或类似事件)终止关联
  • 假设任何早于一分钟(和一点)的时间戳都已失效

您可以尝试捕捉人们离开页面的一些方式,但这绝不是万无一失的。关于最小化页面,我想他们是否真的在查看页面是有争议的;)

于 2008-09-18T19:29:13.923 回答
1

我认为您能做的最好的事情就是为“访问页面”设置一个阈值。让自动化任务每 60、120、300 或某些秒数运行一次,以清除任何早于指定时间量的条目。当用户离开页面时,没有办法可靠地检测(我知道)。您可以做的最好的事情是“假设”用户在经过一定时间后停止使用该网站。因此,您将存储用户、页面和查看时间。一旦查看的时间超过了您的阈值,请将其删除。

于 2008-09-18T19:20:29.887 回答
1

我不认为每秒都有一个 AJAX 请求是一个好主意,它太健谈了。

我认为大多数人通过仅记录某人何时向站点发出请求以及从那时起threshold用户正在“访问”该站点来实现此功能。如果用户在到达之前没有发出另一个服务器请求,threshold那么我们假设他们已经继续前进。

于 2008-09-18T19:21:48.090 回答
1

在页面上安装一个小型 Flash 应用程序如何从服务器流式传输微小的“心跳”数据流……足以让服务器知道何时丢弃了流,从而知道客户端何时离开从页面。

于 2008-09-18T19:25:52.463 回答
0

对于正文有一个 onunload 脚本:< body onunload="userLeftPage()"

在该脚本中,发送一个 ajax 调用来说明用户离开了页面。

于 2008-09-18T19:21:09.137 回答
0

第一个答案有效。

但...

您没有提到用户已登录,所以我怀疑这不是您正在查看的内容。但是,如果您只是每分钟左右请求登录用户列表,您当然可以简化事情。

于 2010-01-21T16:28:21.827 回答