如何让每个网络用户';的状态在服务器端为联机或脱机

本文关键字:状态 服务器端 脱机 联机 网络 用户 | 更新日期: 2023-09-27 18:16:51

当用户关闭选项卡或浏览器时,意味着用户无法联机,所以我想使用联机或脱机状态来管理一些状态。

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

如何让每个网络用户';的状态在服务器端为联机或脱机

假设您有一个身份验证系统,您可以在个人/帐户表中添加一个带有日期时间值的新列。在这里,您可以存储用户上次活动的时间戳。您可以使用中间件来更新此字段。因此,每当用户请求新页面时,您都可以更新数据库中的时间戳。要决定用户是否在线,你必须以秒为单位计算一个范围,假设用户在线,比如如果用户在10、20、30秒前请求页面,你可以假设用户在线。

当用户关闭选项卡或浏览器时,意味着用户无法在线,因此我想使用联机或脱机状态来管理一些状态。

您可以获取选项卡或浏览器的关闭事件window.onbeforeunload。在这个事件中,通过传递userId来执行对服务器的ajax调用,然后在服务器中,您只需要更新您的DB即可表明用户处于脱机状态。

如何捕捉关闭事件的示例,工作示例

JavaScript

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

Jquery

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

在Javascript和Jquery 中实现Ajax调用

服务器中的ActionResult示例

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

这是如何处理此类场景的基本理念。