Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 当Flash VM关闭时,如何运行拆卸代码?_Actionscript 3_Flash_Apache Flex - Fatal编程技术网

Actionscript 3 当Flash VM关闭时,如何运行拆卸代码?

Actionscript 3 当Flash VM关闭时,如何运行拆卸代码?,actionscript-3,flash,apache-flex,Actionscript 3,Flash,Apache Flex,是否有办法注册在Flash即将关闭时运行的代码(例如,当用户关闭浏览器或DOM操作导致嵌入式播放器被删除时) 特别是,我希望我的应用程序向远程服务发送一个结束数据包,以便用户的对等方知道用户不必等待超时就没有机会返回。我使用URLLoader和URLRequest来维护BOSH连接,因此我欢迎适用于此特定情况的解决方案。但是,如果有特定于NetConnection的解决方案,我相信我也可以从中学习 我很高兴接受这个回调不会在kill-9上运行,但最好有更优雅的退出路径来允许一些代码执行。似乎更好

是否有办法注册在Flash即将关闭时运行的代码(例如,当用户关闭浏览器或DOM操作导致嵌入式播放器被删除时)

特别是,我希望我的应用程序向远程服务发送一个结束数据包,以便用户的对等方知道用户不必等待超时就没有机会返回。我使用URLLoader和URLRequest来维护BOSH连接,因此我欢迎适用于此特定情况的解决方案。但是,如果有特定于NetConnection的解决方案,我相信我也可以从中学习


我很高兴接受这个回调不会在
kill-9
上运行,但最好有更优雅的退出路径来允许一些代码执行。

似乎更好的解决方案是通过服务器端执行。否?服务器应该能够检测到断开连接,然后使会话无效

然而,您可以使用基于客户机/套接字的解决方案,尽管开销要大得多。使用FMS或其他rtm实时服务器,您可以向web服务器发送连接中断的事件(尽管在网络连接不足或internet中断的情况下可能会出现问题)。但我建议反对这种做法,因为根据我的经验,FMS很糟糕:)


设置极低的超时是否不可能?(即<10秒)

覆盖js的window.close发送事件怎么样?问题是允许用户在途中关闭/发送它们。@DanielH,我们已经考虑过在JS级别使用window.onBeforeUnload这样的选项。会话是在Flash中建立和维护的(因此最容易关闭),因此最可靠的断开方式是在VM内部。我们发现在JS级别监听并使用ExternalInterface触发Flash代码是非常不可靠的。除了使用keep alives之外,我对BOSH不太了解——服务器无法检测到断开连接,这对我来说似乎很奇怪。将在下面写一些关于RTMP的内容。@StevenXu,不幸的是,window.onBeforeUnload和ExternalInterface是唯一的解决方案。Flash Player由浏览器卸载,因此不可靠的窗口.onBeforeUnload是检测是否发生这种情况的唯一方法。无论你做什么,都应该尽量不要做太多的工作,以增加成功的机会。(我对BOSH也不了解:)仅供参考,我(和Vokel的同事)已经用window.onforeUnload和ExternalInterface解决了这个问题。我希望在获得会话之前有一个适度的长时间超时,以允许暂时的网络中断(例如,短暂的Wi-Fi连接中断)能够正常恢复。因此,至少有30秒的超时时间就好了。在任何情况下,服务器都可以相对快速地确定客户端是否已失去连接。我试图区分的关键问题是,由于临时网络问题(在这种情况下,我们应该给客户端时间重新连接)而导致的连接丢失,或者由于Flash VM关闭而导致的连接丢失(在这种情况下,应该通知其他人)。是的,我认为你在这里,没有编写自己的浏览器扩展。