如果我们在做在flash的在线游戏时,一般是希望用户在刷新这个页面或者关闭这个页面就断开socket连接。
一般的浏览器在关闭后,都是默认的断开socket连接的。
但是刷新就不一定了。IE总是不太听话,在刷新时不会断开原来的连接。这样一来,一个IE的页面就保持了两个连接!
很容易造成数据的错误! 还有一些未知的异常,都是因为这该死的IE引起的。
网上大部分都说,加头信息之类的
<meta http-equiv="Expires" content="-1"/>
<meta http-equiv="PRAGMA" content="NO-CACHE"/>
<meta http-equiv="cache-control" content="NO-CACHE"/>
经测试,这个方法不管用!
还有的说是添加随机数。
在我们的连接后面加的Math.random()的一个参数。
这个方法也不行。
最后,打算在flex中找一个触发函数来自行关闭socket。
终于发现了这个事件
mx.events.FlexEvent.HIDE:当对象的状态从可见变为不可见时分派。
flex代码:就是在Application中添加一个hide的处理函数,关闭连接就行了。
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:compoents="compoents.*" creationComplete="init()"
hide="application1_hideHandler(event)">