From 83fba45a3dcb42d50f59afe90d8f76a252887b57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9C=E6=96=B9=E5=A4=95=E9=98=B3?= Date: Wed, 27 Jul 2016 16:56:47 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E4=BF=AE=E6=94=B9Flashsdk=20=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=96=AD=E7=BA=BF=E9=87=8D=E8=BF=9E=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=202=20=E6=9C=8D=E5=8A=A1=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E7=BE=8E=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2.2.0.VERSION => 2.2.1.VERSION | 0 CIMFlashBridge/bin-debug/CIMBridge.swf | Bin 11606 -> 12018 bytes CIMFlashBridge/bin-release/CIMBridge.swf | Bin 6743 -> 7052 bytes CIMFlashBridge/src/CIMBridge.as | 51 +- .../cim-server/WebRoot/console/header.jsp | 62 +-- .../WebRoot/console/session/manage.jsp | 65 +-- .../WebRoot/console/webclient/CIMBridge.swf | Bin 6743 -> 7052 bytes .../WebRoot/console/webclient/LoginDialog.jsp | 53 +- .../console/webclient/MessageDialog.jsp | 4 +- .../WebRoot/console/webclient/cim.js | 2 + .../WebRoot/console/webclient/main.jsp | 55 +- .../css/bootstrap.min.css | 6 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 +++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../bootstrap-3.3.6-dist/js/bootstrap.min.js | 7 + .../resource/bootstrap-3.3.6-dist/js/npm.js | 13 + .../bootstrap/css/bootstrap-theme.min.css | 1 - .../resource/bootstrap/css/bootstrap.min.css | 9 - .../fonts/glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 228 --------- .../fonts/glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../resource/bootstrap/js/bootstrap.min.js | 6 - .../WebRoot/resource/css/base-ui.css | 483 ++++++++++-------- .../WebRoot/resource/img/blue_line.jpg | Bin 8956 -> 0 bytes .../WebRoot/resource/img/circle_banner.jpg | Bin 321483 -> 0 bytes .../WebRoot/resource/img/disk-spr.png | Bin 12954 -> 0 bytes .../WebRoot/resource/img/icon_error.png | Bin 906 -> 0 bytes .../WebRoot/resource/img/icon_hint.png | Bin 1500 -> 0 bytes .../WebRoot/resource/img/icon_success.png | Bin 2565 -> 0 bytes .../WebRoot/resource/img/pattern.png | Bin 0 -> 16051 bytes .../WebRoot/resource/img/scan_download.png | Bin 60891 -> 0 bytes .../WebRoot/resource/img/top-bg.png | Bin 1205 -> 0 bytes .../WebRoot/resource/img/usericon_bg.png | Bin 562 -> 0 bytes .../WebRoot/resource/js/framework.js | 95 ++-- .../cim-server/WebRoot/console/header.jsp | 62 +-- .../WebRoot/console/session/manage.jsp | 65 +-- .../WebRoot/console/webclient/CIMBridge.swf | Bin 6743 -> 7052 bytes .../WebRoot/console/webclient/LoginDialog.jsp | 53 +- .../console/webclient/MessageDialog.jsp | 4 +- .../WebRoot/console/webclient/cim.js | 2 + .../WebRoot/console/webclient/main.jsp | 55 +- .../css/bootstrap.min.css | 6 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 +++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../bootstrap-3.3.6-dist/js/bootstrap.min.js | 7 + .../resource/bootstrap-3.3.6-dist/js/npm.js | 13 + .../bootstrap/css/bootstrap-theme.min.css | 1 - .../resource/bootstrap/css/bootstrap.min.css | 9 - .../fonts/glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 228 --------- .../fonts/glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../resource/bootstrap/js/bootstrap.min.js | 6 - .../WebRoot/resource/css/base-ui.css | 483 ++++++++++-------- .../WebRoot/resource/img/blue_line.jpg | Bin 8956 -> 0 bytes .../WebRoot/resource/img/circle_banner.jpg | Bin 321483 -> 0 bytes .../WebRoot/resource/img/disk-spr.png | Bin 12954 -> 0 bytes .../WebRoot/resource/img/icon_error.png | Bin 906 -> 0 bytes .../WebRoot/resource/img/icon_hint.png | Bin 1500 -> 0 bytes .../WebRoot/resource/img/icon_success.png | Bin 2565 -> 0 bytes .../WebRoot/resource/img/pattern.png | Bin 0 -> 16051 bytes .../WebRoot/resource/img/scan_download.png | Bin 60891 -> 0 bytes .../WebRoot/resource/img/top-bg.png | Bin 1205 -> 0 bytes .../WebRoot/resource/img/usericon_bg.png | Bin 562 -> 0 bytes .../WebRoot/resource/js/framework.js | 95 ++-- 72 files changed, 1517 insertions(+), 1288 deletions(-) rename 2.2.0.VERSION => 2.2.1.VERSION (100%) create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/css/bootstrap.min.css create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.eot create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.svg create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.ttf create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff2 create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/js/bootstrap.min.js create mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/js/npm.js delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap.min.css delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/bootstrap/js/bootstrap.min.js delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/blue_line.jpg delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/circle_banner.jpg delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/disk-spr.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/icon_error.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/icon_hint.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/icon_success.png create mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/pattern.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/scan_download.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/top-bg.png delete mode 100644 cim_for_mina/cim-server/WebRoot/resource/img/usericon_bg.png create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/css/bootstrap.min.css create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.eot create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.svg create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.ttf create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/fonts/glyphicons-halflings-regular.woff2 create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/js/bootstrap.min.js create mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap-3.3.6-dist/js/npm.js delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/css/bootstrap.min.css delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/bootstrap/js/bootstrap.min.js delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/blue_line.jpg delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/circle_banner.jpg delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/disk-spr.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/icon_error.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/icon_hint.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/icon_success.png create mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/pattern.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/scan_download.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/top-bg.png delete mode 100644 cim_for_netty/cim-server/WebRoot/resource/img/usericon_bg.png diff --git a/2.2.0.VERSION b/2.2.1.VERSION similarity index 100% rename from 2.2.0.VERSION rename to 2.2.1.VERSION diff --git a/CIMFlashBridge/bin-debug/CIMBridge.swf b/CIMFlashBridge/bin-debug/CIMBridge.swf index 126410213474b9182741964e73dc826d2caa8c69..8362aaa248e633d7a231df5311044a3f3f356dd3 100644 GIT binary patch literal 12018 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 H{V1$M^DLdh diff --git a/CIMFlashBridge/src/CIMBridge.as b/CIMFlashBridge/src/CIMBridge.as index 35505b0..4a8653a 100644 --- a/CIMFlashBridge/src/CIMBridge.as +++ b/CIMFlashBridge/src/CIMBridge.as @@ -2,18 +2,24 @@ package { import flash.display.Sprite; import flash.events.Event; + import flash.events.IOErrorEvent; import flash.events.ProgressEvent; + import flash.events.TimerEvent; import flash.external.ExternalInterface; import flash.media.Sound; import flash.net.Socket; import flash.net.URLRequest; import flash.system.Security; + import flash.utils.Timer; + public class CIMBridge extends Sprite { internal var CIM_HOST:String = "127.0.0.1"; - internal var CIM_PORT:String = "23456"; - internal var socket:Socket; + internal var CIM_PORT:Number = 23456; + internal const TIME_OUT :Number =10000; + internal const RE_CONNECT_TIME :Number = 20000; + internal var socket:Socket = new Socket(); internal var froceOffline :Boolean = false; internal const MESSAGE_SEPARATE :String = '\b'; /** @@ -25,7 +31,7 @@ package */ internal const CMD_HEARTBEAT_RESPONSE:String ="C_H_RS"; - internal var mBuffer :String = '\b'; + internal var mBuffer :String = ''; public function CIMBridge() { @@ -36,21 +42,31 @@ package ExternalInterface.addCallback("logout",logout); ExternalInterface.addCallback("playSound",playSound); - ExternalInterface.call("bridgeCreationComplete"); + ExternalInterface.call("flashBridgeCreated"); } - public function connect(host:String):void + public function connect(host:String,port:Number):void { CIM_HOST = host; + CIM_PORT = port; var policyfile:String="xmlsocket://"+CIM_HOST+":"+CIM_PORT; Security.loadPolicyFile(policyfile);//加载安全策略文件,得到相应的返回才会创建连接 - socket=new Socket(); + socket.timeout = TIME_OUT; socket.addEventListener(Event.CONNECT,sessionCreated);//监听是否连接上服务器 socket.addEventListener(Event.CLOSE,sessionClosed);//监听套接字连接是否关闭 + socket.addEventListener(IOErrorEvent.IO_ERROR,sessionFailed);//监听套接字连接是否失败 socket.addEventListener(ProgressEvent.SOCKET_DATA,messageReceived); //监听服务器消息 + socket.connect(CIM_HOST,CIM_PORT);//连接服务器 - socket.connect(CIM_HOST,parseInt(CIM_PORT));//连接服务器 + + var timer:Timer = new Timer(TIME_OUT, 1); + timer.addEventListener(TimerEvent.TIMER, function():void{ + if(socket.connected == false){ + sessionFailed(new IOErrorEvent("")); + } + }); + timer.start(); } @@ -109,10 +125,29 @@ package if(!froceOffline) { - connect(CIM_HOST); + reconnection(); } } + private function sessionFailed(event:Event):void + { + //每隔20秒重新连接 + + ExternalInterface.call("sessionFailed"); + + reconnection(); + + } + + private function reconnection():void{ + var timer:Timer = new Timer(RE_CONNECT_TIME + Math.random() * 10, 1); + timer.addEventListener(TimerEvent.TIMER, function():void{ + connect(CIM_HOST,CIM_PORT); + }); + timer.start(); + + } + internal function handleMessage(message:String):void{ diff --git a/cim_for_mina/cim-server/WebRoot/console/header.jsp b/cim_for_mina/cim-server/WebRoot/console/header.jsp index bd26f17..e79ea57 100644 --- a/cim_for_mina/cim-server/WebRoot/console/header.jsp +++ b/cim_for_mina/cim-server/WebRoot/console/header.jsp @@ -48,9 +48,10 @@ -
+
+ 关于 + onclick="doShowDialog('aboutDialog')"> 关于
@@ -60,18 +61,21 @@ - -