2017-12-01 8 views
0

ユーザーが自分のウェブサイトにいなくなったときに、ログアウトしたり、XMPPからの接続を閉じたりします。C#でブラウザを閉じているときにXMPPからログアウトするには?

私の質問は、jqueryイベントを書くか、ajaxコールを行う必要がありますか?

私はログアウトボタンのクリックイベントでこのコードを書いています。

XmppClient client = (XmppClient)Session["XMPP"]; 
if (client != null) 
{ 
    client.Close(); 
    client.Dispose(); 
} 

Global.asaxファイルでイベントが利用可能かどうかわかりません。

または、別の方法で解決してください。

答えて

0

ここでの回答を参照してください:Javascript register window/tab closing event before window/tab closebrowser compatibility (MDN)は何であることを確認してください。もちろん、

window.onbeforeunload = function (event) { 
    $.ajax('/api/route/specifically/to/finalize/xmpp') 
}; 

window.onbeforeunloadMDN article)イベントを使用して

、あなたのXmppClientを確定することができますAJAX呼び出しをオフに解雇するイベントリスナーを割り当てることができます必要とする。たとえば、Edgeはこのイベントをサポートしていません。 IEは明らかにiffyその特定のイベントハンドラになります。別の"beforeunload" event、つまりapparently more widely supportedを参照することもできます。それは次のようになります。

window.addEventListener("beforeunload", function (event) { 
    $.ajax('/api/route/specifically/to/finalize/xmpp') 
}); 

はまた、ブラウザがクラッシュした場合、これは例えば、動作しません、またはブラウザがそれを発射することができないかもしれないところ、いくつかの他の予期しないイベントは、ウィンドウを閉じるには、原因となることに注意してくださいイベントがウィンドウが閉じる前に。

ます。また Global.aspxSession_Endイベント検討するかもしれない

On-Session-expire-event?MSDN article

public void Session_OnEnd() 
{ 
    Application.Lock(); 
    Application["UsersOnline"] = (int)Application["UsersOnline"] - 1; 
    Application.UnLock(); 
} 

「いつ破棄メソッドが呼び出されているか、セッションの有効期限が切れたとき。」(MSDNによる)実行されます

関連する問題