观看网页的每个人的客户视图

时间:2008-09-18 19:16:31

标签: .net asp.net sql-server vb.net ajax

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

我想要做的是向正在查看网页的所有用户显示有关查看网页的任何一个用户的信息。信息来自AD和SQL,我没有检索它。

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

此功能对于网站的功能并不重要,所以我在一年多前放弃了它。从那时起,我真的很痛苦,我无法想办法让这项工作成功。我的搜索让我失去了许多无用的道路,所以我真的很感激任何可以提供的帮助,即使它只是朝着正确的方向发展。

6 个答案:

答案 0 :(得分:2)

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

    页面上的
  • 请求将用户与页面(和时间戳)相关联
  • 使用Ajax计时器每分钟更新一次时间戳
  • 通过window.onbeforeunload事件(或类似)
  • 终止关联
  • 假设任何超过一分钟(和一点点)的时间戳已经死亡

你可以尝试捕捉人们离开页面的一些方式,但它绝不是防弹。关于最小化页面,我猜他们是否实际上正在查看页面是有争议的;)

答案 1 :(得分:1)

我认为你能做的最好的事情是为“访问页面”设置一个阈值。每隔60,120,300或几秒钟运行一个自动化任务,清除任何超过指定时间的条目。当用户离开页面时,无法可靠地检测(我知道)。您可以做的最好是“假设”用户已经停止使用该网站,如果已经过了一定的时间。因此,您可以存储用户,页面和查看的时间。一旦查看的时间超过了您的阈值,请将其删除。

答案 2 :(得分:1)

我不认为每一秒都有一个AJAX请求是个好主意,这太过分了。

我认为大多数人只需在有人向网站发出请求时进行录制,然后从threshold用户“访问”网站进行录制。如果用户在达到threshold之前没有提出另一个服务器请求,那么我们假设他们已经继续前进。

答案 3 :(得分:1)

在页面上有一个微小的Flash应用程序如何从服务器流出一个微小的'心跳'数据流....这足以让服务器知道何时删除了一个流,因此当客户端导航离开了页面。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

第一个答案有效。

但是...

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