`
isiqi
  • 浏览: 16050314 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex 如何限制客户端只运行一个application实例

阅读更多

flexweb应用,就必须处理web应用的一个常见问题,即在同一台电脑上用不同账号登陆web应用,由于火狐了、ie7以上版本等浏览器sessionid是同一个,因此会发生ab用户共享同一session信息进行业务操作,从而导致业务紊乱。

幸运的是,flexlocalconnection可以实现同一application在同一客户机上只可有一个实例在运行。关于localconnection相关信息,大家可以参阅adobe的参考文档。我们只需关注application一个实例的localconnection send信息出来之后,application另外一个实例的localconnection connect可以接收到信息。因此,只要localconnection connect接收到信息,即可表明一定有已存在的application在运行,此时需要做退出application等相关处理。下述为demo

<?xml version="1.0" encoding="utf-8"?>

<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" creationComplete="init()">

<s:layout>

<s:BasicLayout/>

</s:layout>

<fx:Script>

<![CDATA[

import mx.controls.Alert;

import mx.events.CloseEvent;

private var conn:LocalConnection;

private function init():void{

sendLocalCon();

}

//if the app is first running

private function sendLocalCon():void{

try{

conn = new LocalConnection();

conn.addEventListener(StatusEvent.STATUS, onLocalConStatus);

conn.send("myConn","localConMethod");

}catch(e:Error){}

}

public function localConMethod():void{}

private function onLocalConStatus(event:StatusEvent):void {

switch (event.level) {

case "status":

Alert.show("该应用已经在运行,请检查!","系统提示",4,null,closeApplication);

break;

case "error":

findApplications();

break;

}

}

private function findApplications():void{

conn = new LocalConnection();

conn.client = this;

try {

conn.connect("myConn");

} catch (error:ArgumentError) {

Alert.show("该应用已经在运行,请检查!","系统提示",4,null,closeApplication);

}

}

// private static const JS_CLOSEHTML:String="function closeWindowns(){" +

// "window.opener=null;"+

// "window.open('','_self');"+

// "window.close();"+

// "}";

private function closeApplication(evt:CloseEvent):void{

// ExternalInterface.call(JS_CLOSEHTML);

//检查到应用二次运行时,程序该做的事情

}

]]>

</fx:Script>

<fx:Declarations>

<!-- 将非可视元素(例如服务、值对象)放在此处 -->

</fx:Declarations>

<s:Panel title="应用只运行一次示例" x="35" y="33" width="168"/>

</s:Application>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics