2012-09-07 3 views
1

StreamingAMF 채널을 사용하여 BlazeDS 서버에 연결하는 Flex 애플리케이션이 있습니다. 브라우저가 닫힌 경우 서버 측에서 감지하고 싶습니다. FlexClientListener에 대한 구현을 추가했습니다. FlexClient (FlexContext.getFlexClient(). addClientDestroyedListener)에 등록했습니다.Flex BlazeDS에서 브라우저 닫기를 감지합니다.

그러나 Browser close에서는 Listener의 clientDestroyed 메소드가 호출되지 않습니다. 세션 제한 시간에 호출됩니다. 이것을 달성 할 다른 방법이 있습니까?

답변

0

서버에서 클라이언트의 브라우저 상호 작용을 감지 할 수 없습니다.

가장 좋은 추측은 ExternalInterface입니다. Flash 응용 프로그램이 JavaScript와 통신 할 수 있으며 그 반대의 경우도 마찬가지입니다.

JavaScript onClose event을 사용하면 브라우저가 닫히고 있음을 서버 측에 알리는 원격 호출을 할 Flash 응용 프로그램에서 함수를 호출하는 일부 JavaScript를 트리거 할 수 있습니다.

0

우리는 너무 플렉스

<script language="JavaScript" type="text/javascript"> 

    function cleanup() 
    { 
     getMyApplication("swf_filename_without_extension").cleanUp();  
     alert("Disconnected! Press OK to continue."); 
    } 

    function getMyApplication(appName) 
    { 
     if (navigator.appName.indexOf ("Microsoft") != -1) 
     { 
       return window[appName]; 
     } 
     else 
     { 
       return document[appName]; 
     } 
    } 
</script> 


<body onbeforeunload="cleanup()"> 

에서 세션 폐쇄 코드를 호출 유사한 문제가, 세션이 블레이즈 DS에서 메모리 누수를 일으키는 폐쇄하지, 우리는 그 폐쇄 브라우저를 보장하기 위해 자바 스크립트, SWF 래퍼 아래 스크립트를 작성했다 Flex에서 작성 완료 리스너를 다시 호출하십시오.

ExternalInterface.addCallback("cleanUp",cleanUp); 

클린업 메소드에 모든 세션 종료 코드를 작성하십시오.

참고 : 자바 스크립트에 경고 메시지를 넣는 것을 잊지 마십시오. 그러면 cleanUp 메서드를 실행할 충분한 시간이 주어집니다.