【问题标题】:Flex BlazeDS detect browser closeFlex BlazeDS 检测浏览器关闭
【发布时间】:2012-09-07 09:16:41
【问题描述】:
我有一个使用 StreamingAMF 通道连接到 BlazeDS 服务器的 Flex 应用程序。如果浏览器关闭,我想在服务器端进行检测。我为 FlexClientListener 添加了一个实现并将其注册到 FlexClient (FlexContext.getFlexClient().addClientDestroyedListener)
但是在浏览器关闭时不会调用 Listener 的 clientDestroyed 方法。它在会话超时时被调用。有没有其他方法可以做到这一点?
【问题讨论】:
标签:
spring
apache-flex
browser
blazeds
【解决方案2】:
我们也有类似的问题,不关闭会话导致 BlazeDS 中的内存泄漏,我们在 swf wrapper javascript 中编写了以下脚本,以确保关闭浏览器调用 flex 中的会话关闭代码
<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()">
在 Flex 中添加一个回调创建完成监听器
ExternalInterface.addCallback("cleanUp",cleanUp);
并在 cleanUp 方法中编写所有会话关闭代码。
注意:不要忘记将警报消息放在 javascript 中。这将为 cleanUp 方法提供足够的时间来执行。