Django在浏览器关闭时触发信号user_logged_out

时间:2017-12-15 11:11:31

标签: django signals browser-close

我正在使用django应用程序与用户聊天。因此,我需要显示登录或注销到其他用户的状态。为了实现这一点,我使用了django的signals环境。只要用户使用注销按钮,一切都运行良好。如果他们正在关闭浏览器或标签,则无法检测状态切换到离线状态。 当浏览器或标签关闭时,触发user_logged_out信号的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

通常在聊天应用程序中不会像这样处理。它的处理方式是,您定期向客户请求某个URL。当您的服务器没有收到任何请求时,表示该用户处于脱机状态。 原因很简单。很多人认为可能会出错。如果用户互联网出现故障怎么办你怎么能发现那个?所以最好的方法是你专门用一个url来听这些请求。请求停止时这意味着用户处于离线状态。在这种情况下,你不关心发生了什么,用户关闭浏览器或互联网停止或计算机崩溃或突然电脑关闭或等...

答案 1 :(得分:0)

你可以触发这样的信号:

from django.contrib.auth.signals import user_logged_in, user_logged_out 
from django.dispatch import receiver 
from django.conf import settings

@receiver(user_logged_in) 
def _user_logged_in(sender, user, request, **kwargs):
    ..........your code here.........

@receiver(user_logged_out) 
def _user_logged_out(sender, user, request, **kwargs):
    .......your code here.........

查看this_link了解更多详情。