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