2017-12-15 6 views
0

나는 사용자를위한 채팅으로 장고 응용 프로그램을 작성 중입니다. 따라서 다른 사용자에게 로그인하거나 로그 아웃 한 상태를 제시해야합니다. 이를 위해 나는 signals django 환경을 사용했다. 사용자가 로그 아웃 버튼을 사용하는 한 모든 것이 잘 작동합니다. 브라우저 나 탭을 닫으면 오프라인으로 상태 전환을 감지 할 수 없습니다. 브라우저 또는 탭이 닫히면 user_logged_out 신호를 발생시키는 가장 좋은 방법은 무엇입니까? 자세한 내용에 대한 this_link에서장고 화재 신호 user_logged_out 브라우저 닫음

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

보기 :

+0

자바 스크립트를 사용하여 브라우저 닫기 이벤트를 감지 한 다음 로그 아웃 작업을 트리거 할 수 있습니다 , 체크 아웃이 그래서 대답 https://stackoverflow.com/questions/20853142/trying-to-detect-browser-close-event – Satendra

답변

0

는이 같은 신호를 트리거 할 수 있습니다.

1

일반적으로 채팅 응용 프로그램에서는 이와 같이 처리되지 않습니다. 처리되는 방식은 일정한 간격으로 고객으로부터 특정 URL을 요청하는 것입니다. 서버가 더 이상 요청을받지 못하면 사용자가 오프라인임을 의미합니다. 이유는 간단합니다. 많은 생각이 잘못 될 수 있습니다. 사용자 인터넷이 다운되면 어떻게 될까요? 어떻게 감지 할 수 있니? 가장 좋은 방법은 그러한 요청을 청취 할 때만 특정 URL을 사용하는 것입니다. 요청이 중지되면. 사용자가 오프라인 상태임을 나타냅니다. 이 경우 사용자가 브라우저 또는 인터넷을 중지하거나 컴퓨터가 닫히거나 갑자기 컴퓨터가 꺼지는 등의 문제가 발생하지 않습니다.