2017-12-01 14 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 close. window.onbeforeunload (MDN article) 이벤트를 사용

, 당신은 마무리 할 수있는 AJAX 호출을 XmppClient 당신 해고하는 이벤트 리스너를 할당 할 수

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

browser compatibility (MDN) 있는지 확인해야한다 무엇 필요하다. 예를 들어, Edge는이 이벤트를 지원하지 않습니다. IE는 분명히 특정 이벤트 핸들러에 관해서 iffy입니다. apparently more widely supported 대체 "beforeunload" event을 참조 할 수도 있습니다. 그 결과는 다음과 같습니다

또한
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에 따르면) "때 포기 메서드가 호출되었거나 세션이 만료되면."