1

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

4

2 回答 2

1

通常在聊天应用程序中不会这样处理。它的处理方式是,您定期向客户端请求某个 url。当您的服务器不再收到任何请求时,这意味着用户处于离线状态。原因很简单。很多想法都可能出错。如果用户互联网出现故障怎么办?你怎么能检测到呢?所以最好的方法是你只用一个特定的 url 来收听这样的请求。当请求停止时。这意味着用户离线。在这种情况下,您不在乎发生了什么,用户关闭浏览器或互联网停止或计算机崩溃或突然计算机关闭等......

于 2017-12-15T12:11:16.827 回答
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了解更多详情。

于 2017-12-15T12:06:28.687 回答