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

本文介绍如何使用Flex的LocalConnection确保Web应用在同一客户端上仅能运行一个实例,以避免因多个账号登录导致的业务紊乱问题。通过发送和接收LocalConnection信息来判断应用是否已在运行,并给出相应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值