2012-06-20 49 views
1

是否有注册代码的方式,当Flash是快要接近运行(例如,当用户关闭浏览器或者DOM操作导致嵌入式播放器中删除)?如何在Flash虚拟机关闭时运行拆卸代码?

特别,我想我的应用程序,以关闭数据包发送到远程服务,让用户的同行知道用户没有回来,而不必等到超时的机会。我使用URLLoader和URLRequest来维护BOSH连接,因此我欢迎适用于此特定情况的解决方案。但是,如果有NetConnection特定的解决方案,我相信我也可以向他们学习。

我很高兴接受这个回调不会在kill -9上运行,但如果让更优雅的退出路径允许某些代码执行,那将是非常好的。

+0

如何压倒一切的window.close发送您的活动JS?那么问题就在于允许用户在途中关闭/发送它们。 – ansiart

+0

@DanielH,我们已经考虑过使用window.onBeforeUnload这样的JS级别的选项。会话在Flash中保持不变(因此最容易关闭),所以最可靠的断开方式将在VM内部进行。我们发现在JS级别侦听并使用ExternalInterface触发Flash代码是非常不可靠的。 –

+0

我对BOSH不太了解,除了使用keep-alives之外 - 我觉得服务器无法检测到断开连接似乎很奇怪。下面将写一些关于RTMP的内容。 – ansiart

回答

0

这似乎是更好的解决办法是通过在服务器端要做到这一点没有?服务器应该能够检测到断开连接,然后可以使会话无效。

但是,你可以用客户端/插座基础的解决方案去,尽管更多的开销。使用FMS或其他rtm实时服务器,您可以将事件发送到您的Web服务器,以避免连接中断(尽管在低网络连接或互联网丢失的情况下您可能遇到问题)。我建议去反对这虽然,在我的经验,FMS吮吸:)

是设定极低超时的可能性也不大? (即< 10秒)

+0

我希望在收获会话之前有适度的超时,以便暂时中断网络(例如,短暂丢失Wi-Fi连接)以便从优雅中恢复。结果,超时至少30秒将会很好。无论如何,服务器可以相对快速地确定客户端是否失去连接。我试图区分的关键是由于临时的网络问题(在这种情况下,我们应该让客户端有时间重新连接)或由于Flash虚拟机关闭而导致连接丢失(在这种情况下应该通知其他人) )。 –

+0

是的,我认为你是SOL,不用编写自己的浏览器扩展。 – ansiart