问候,有人可以给我一些建议或链接,以帮助我实现以下方案.页面将用asp.net mvc编写.授权将由会员实施.方案如下:
User1刚刚登录.过了一会儿,User2尝试登录成功.然后,应通知user1 User2刚刚登录.此外,应通知User2 User1已联机.
我怎样才能实现这样的目标?这些用户也应该可以相互写消息.(像聊天一样).
有一些方法可以在asp.net成员资格提供程序中执行此操作,特别是IsUserOnline()和类似CountUsersOnline()的方法.这些方法唯一的问题是它们真的很蹩脚.它们依赖于成员资格提供程序的LastActivityDate()和您可以在web.config中设置的窗口.换句话说,如果用户最后一次遇到成员资格提供者加上web.config中的时间窗口未到期,则认为该用户在线.
我们通过设置Comet服务器并每隔十分钟ping一次Web服务器,使用了这个scenairo并使其工作.当ping服务器时,它会更新成员资格提供程序的LastActivityDate.
我们将活动窗口设置为12分钟,以及会话计时器.这使我们能够确定谁在线到达大约十分钟的准确度.
这是Web.config中的行:
<membership userIsOnlineTimeWindow="12">
Run Code Online (Sandbox Code Playgroud)
这是jQuery Comet服务器:
function getData() {
$.getJSON("/Account/Timer", gotData);
}
// Whenever a query stops, start a new one.
$(document).ajaxStop(getData, 600000);
// Start the first query.
getData();
Run Code Online (Sandbox Code Playgroud)
这是我们的服务器代码:
public JsonResult Timer()
{
MembershipUser user = Membership.GetUser(User.Name);
user.LastActivityDate = DateTime.Now;
Membership.UpdateUser(user);
// You can return anything to reset the timer.
return Json(new { Timer = "reset" }, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3544 次 |
| 最近记录: |