繁体   English   中英

浏览器上的Django火警信号user_logged_out关闭

[英]Django fire signal user_logged_out on browser close

我正在为用户聊天的Django应用程序。 因此,我需要向其他用户显示已登录或已注销的状态。 为此,我使用了django的信号环境。 只要用户使用注销按钮,一切都可以正常工作。 如果他们正在关闭浏览器或选项卡,则无法检测到状态切换为脱机。 当浏览器或选项卡关闭时,触发user_logged_out信号的最佳方法是什么?

通常,在聊天应用程序中不会像这样处理。 它的处理方式是,您定期向客户端请求某个网址。 当您的服务器再也没有收到请求时,表示该用户处于脱机状态。 原因很简单。 许多想法可能会出错。 如果用户互联网中断怎么办? 你怎么能发现呢? 因此最好的方法是您仅将特定的URL用于侦听此类请求。 当请求停止时。 这意味着用户处于离线状态。 在这种情况下,您无需担心发生了什么情况,无论是用户关闭的浏览器还是Internet停止或计算机崩溃,或者计算机突然关闭等。

您可以触发这样的信号:

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以获得更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM