private var _heartTimer:Timer;
DSocket.instance.addAcceptDataPacketListener(0x0100, _header0x0100Handler);
_closeTimer = new Timer(GlobalConfig.instance.heartDelay, 1);
_closeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, _closeTimerCompleteHandler, false, 0, true);
_heartTimer = new Timer(GlobalConfig.instance.heartInterval);
_heartTimer.addEventListener(TimerEvent.TIMER, _heartTimerHandler, false, 0, true);
_heartTimer.start();
_heartTimerHandler(null);
private function _closeTimerCompleteHandler(e:TimerEvent):void {
Main.print('time over,socket close');
DSocket.instance.close();
}
private function _heartTimerHandler(e:TimerEvent):void {
_heartTime = getTimer();
_closeTimer.reset();
_closeTimer.start();
var bytes:ByteArray = DSocket.createBytes();
bytes.writeByte(0);
DSocket.instance.sendData(0x0100, bytes);
}
private function _header0x0100Handler(e:SocketEvent):void {
_ping = getTimer()-_heartTime;
//_ping += Math.random()*400;
_closeTimer.reset();
var bytes:ByteArray = DSocket.createBytes();
bytes.writeByte(1);
DSocket.instance.sendData(0x0100, bytes);
this.dispatchEvent(new MainEvent(MainEvent.PING_CHANGED));
}