Django火灾信号用户在浏览器关闭时注销

Django火灾信号用户在浏览器关闭时注销,django,signals,browser-close,Django,Signals,Browser Close,我正在开发一个django应用程序,为用户提供聊天功能。因此,我需要向其他用户显示登录或注销状态。为此,我使用了django环境。只要用户使用注销按钮,一切正常。如果他们突然关闭浏览器或选项卡,则无法检测到状态切换到脱机。 当浏览器或选项卡关闭时,发出用户注销信号的最佳方式是什么?您可以触发如下信号: from django.contrib.auth.signals import user_logged_in, user_logged_out from django.dispatch impo

我正在开发一个django应用程序,为用户提供聊天功能。因此,我需要向其他用户显示登录或注销状态。为此,我使用了django环境。只要用户使用注销按钮,一切正常。如果他们突然关闭浏览器或选项卡,则无法检测到状态切换到脱机。
当浏览器或选项卡关闭时,发出用户注销信号的最佳方式是什么?

您可以触发如下信号:

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.........

查看更多详细信息。

一般来说,聊天应用程序中不会这样处理。它的处理方式是,您定期从客户端请求特定的url。当服务器没有收到更多请求时,这意味着用户处于脱机状态。
原因很简单。很多想法都可能出错。如果用户互联网瘫痪怎么办?你怎么能发现呢?因此,最好的方法是,只为侦听此类请求而指定特定的url。当请求停止时。这意味着用户处于脱机状态。在这种情况下,您不关心发生了什么,用户关闭浏览器或internet停止或计算机崩溃或计算机突然关闭等。

您可以使用javascript检测浏览器关闭事件,然后触发注销操作,签出此答案