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