Actionscript 3 ActionScript中的套接字连接关闭事件
有人知道为什么在我断开wifi连接后关闭事件没有发送吗?或确定连接是否处于活动状态的任何方法。来自文档:Actionscript 3 ActionScript中的套接字连接关闭事件,actionscript-3,sockets,Actionscript 3,Sockets,有人知道为什么在我断开wifi连接后关闭事件没有发送吗?或确定连接是否处于活动状态的任何方法。来自文档: Dispatched when the server closes the socket connection. 服务器通过发送FIN数据包并等待ACK来关闭连接。如我所见,您只需放下wifi,远程服务器就没有机会发送FIN。来自文档: Dispatched when the server closes the socket connection. 服务器通过发送FIN数据包并等待ACK
Dispatched when the server closes the socket connection.
服务器通过发送FIN数据包并等待ACK来关闭连接。如我所见,您只需放下wifi,远程服务器就没有机会发送FIN。来自文档:
Dispatched when the server closes the socket connection.
服务器通过发送FIN数据包并等待ACK来关闭连接。如我所见,您只需放下wifi,远程服务器就没有机会发送FIN。不确定您是否需要间接关闭它,但我在关闭回调中确实关闭了它
_socket.addEventListener(Event.CLOSE, onClose);
private function onClose(e:Event):void {
_socket.close();
}
您还可以在连接期间进行测试,以确保它尚未连接
if( !_socket.connected ){
try {
_socket.connect(host, port);
this.dispatchEvent( new Event( 'CONNECTING' ) );
} catch (e:Error) {
_socket.close();
this.dispatchEvent( new Event( 'ERROR' ) );
}
}
[编辑]
当与服务器的连接断开时,不会触发连接关闭事件,如果要重新连接,必须对此进行测试。
为此,您需要设置一个计时器来轮询连接。以下类别将继续对插座进行极性连接,如果发现插座未连接,将尝试重新连接。
我剥离并删除了发送函数和非相关信息。
正如你所看到的,我有一个定时器,可以将插座极化,并且在多次重试后也会超时。
如果套接字关闭,该类将尝试使其保持活动状态。
显然,您需要分配端口和主机
我不确定你是否需要直接关闭它,但我在关闭回调时确实需要关闭它
_socket.addEventListener(Event.CLOSE, onClose);
private function onClose(e:Event):void {
_socket.close();
}
您还可以在连接期间进行测试,以确保它尚未连接
if( !_socket.connected ){
try {
_socket.connect(host, port);
this.dispatchEvent( new Event( 'CONNECTING' ) );
} catch (e:Error) {
_socket.close();
this.dispatchEvent( new Event( 'ERROR' ) );
}
}
[编辑]
当与服务器的连接断开时,不会触发连接关闭事件,如果要重新连接,必须对此进行测试。
为此,您需要设置一个计时器来轮询连接。以下类别将继续对插座进行极性连接,如果发现插座未连接,将尝试重新连接。
我剥离并删除了发送函数和非相关信息。
正如你所看到的,我有一个定时器,可以将插座极化,并且在多次重试后也会超时。
如果套接字关闭,该类将尝试使其保持活动状态。
显然,您需要分配端口和主机
理解。有没有办法知道我断开了?好吧,你不能。操作系统应该在超时后关闭连接,但这是一个平台specific@Yuras是的,请看我编辑的答案。而且它不是特定于平台的。您需要通过连接套接字来确定连接状态。有没有办法知道我断开了?好吧,你不能。操作系统应该在超时后关闭连接,但这是一个平台specific@Yuras是的,请看我编辑的答案。而且它不是特定于平台的。您需要通过连接插座来确定连接状态。断开wifi连接后,“已连接”属性保持为真,并且“关闭”事件根本不会触发。这是不可能的。发布你正在做的所有与插座相关的事情的代码。好的,我知道你的问题是什么,我会为你更新我的答案。shortlyok为你发布了一个课程,让你了解如何对连接的插座进行极性和测试。记住,此极性设置为1秒间隔,然后重新连接过程将花费一秒或两秒的时间。。。你在做一些奇怪的事。。。假设已经建立了连接,因此调用了onConnect,并且this.connected设置为true。在wifi连接关闭之后。onClose不会被调用,因此this.connected将保持为true,myConnect将不执行任何操作。在我断开wifi连接后,connected属性保持为true,并且关闭事件根本不会触发。这是不可能的。发布你正在做的所有与插座相关的事情的代码。好的,我知道你的问题是什么,我会为你更新我的答案。shortlyok为你发布了一个课程,让你了解如何对连接的插座进行极性和测试。记住,此极性设置为1秒间隔,然后重新连接过程将花费一秒或两秒的时间。。。你在做一些奇怪的事。。。假设已经建立了连接,因此调用了onConnect,并且this.connected设置为true。在wifi连接关闭之后。不会调用onClose,因此this.connected将保持为true,myConnect将不执行任何操作。