2017-12-15 15 views
0

私はユーザーのチャットでdjangoアプリケーションを開発中です。したがって、他のユーザーにログインまたはログアウトした状態を提示する必要があります。これを達成するために、私はsignals djangoの環境を使用しました。ユーザーがログアウトボタンを使用している限り、すべて正常に動作します。彼らはブラウザやタブを閉めている場合は、オフラインにステータススイッチを検出する方法はありません。 ブラウザまたはタブが閉じたときに、user_logged_out信号を発生させる最善の方法は何ですか?詳細についてthis_linkDjangoの火災信号user_logged_out on browser close

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

ブラウザの終了イベントをjavascriptで検出し、ログアウトアクションをトリガーできます、これをチェックアウトしたので、https://stackoverflow.com/questions/20853142/trying-to-detect-browser-close-event – Satendra

答えて

0

は、次のような信号をトリガすることができます。

1

通常、チャットアプリケーションではこのように処理されません。それが処理される方法は、定期的にクライアントからの特定のURLを要求することです。あなたのサーバがそれ以上のリクエストを得ていないときは、そのユーザがオフラインであることを意味します。 理由は簡単です。多くのことが間違っていると思います。ユーザーのインターネットがダウンするとどうなりますか?どのようにそれを検出することができますか?あなたがそのような要求を聞くためだけに特定のURLを捧げることです。要求が停止したとき。ユーザーがオフラインであることを意味します。この場合、ブラウザやインターネットの停止やコンピュータのクラッシュ、または突然コンピュータの電源が切れたなど、何が起こったかは気にしません。