如何在离开/关闭网页时更新数据库中的状态



如果用户在"XYZ"页面上工作,我想更新状态标志1,并在用户离开该页面时立即更新0

当用户进入时,我可以通过在相应控制器中使用linq进行简单的更新查询来更新标志1

但问题是当用户直接离开或关闭浏览器窗口时,如何更新标志0

我尝试添加以下代码:

window.onload = function () {
window.addEventListener("beforeunload", function (e) {
----------AJAX FUNCTION TO UPDATE DATA HERE--------------
});
};

但问题是如何获得此警报框的回调看到这里的图片

您不能仅仅通过使用客户端功能来确定这是否会持续工作,因为会话可能会以多种方式结束,而这不会被捕获。例如:

  • 失去互联网连接
  • 失去动力
  • 服务器终结点关闭

如果你想在这方面保持一致性,你必须用服务器端的东西来备份它,它会"过期"x分钟内没有收到的会话。

所以我的建议:

  1. 当用户进入页面时,将标志设置为1
  2. 实现您已经必须将标志更新为0的代码
  3. 运行一个服务器函数(可以选择对后台作业使用hangfire(,并在x分钟内未处于活动状态时将所有具有标志1的会话更新为0

最新更新