如何让每个Web用户的状态在服务器端上线或离线?

时间:2016-11-08 10:22:15

标签: c# asp.net-mvc

  

当用户关闭时,标签或浏览器意味着用户无法在线,因此我想使用该在线或离线状态管理某些状态。

如何获得状态请获得解决方案。

2 个答案:

答案 0 :(得分:1)

假设您拥有身份验证系统,则可以使用日期时间值向您的人员/帐户表添加新列。您可以在此处存储用户上次处于活动状态时的时间戳。您可以使用中间件更新此字段。因此,每当用户请求新页面时,您都可以更新数据库中的时间戳。要确定用户是否在线,您必须在几秒钟内确定用户在线的范围,例如,如果用户在10秒,20秒,30秒前请求页面,则可以假定用户在线。

答案 1 :(得分:0)

  

当用户关闭时,标签或浏览器意味着用户无法联机   我想使用在线或离线状态管理某些状态。

您可以抓住标签页或浏览器的关闭事件window.onbeforeunload。在此事件中,通过传递userId对服务器执行ajax调用,然后在服务器中,您只需要更新数据库以说明用户处于脱机状态。

如何捕捉关闭事件的示例Working Example

<强>的JavaScript

window.onbeforeunload = function () {
    //your ajax call to server
};

<强> Jquery的

$(window).on('beforeunload', function(){
  //your ajax call to server
});

JavascriptJquery

中实施Ajax调用

服务器中的ActionResult示例

public ActionResult SignOutUser(string userId){
  // your code to log off the user (either expire his cookies or log offline status in db)
}

这是如何处理此类方案的基本思路。