flex RSO

RSO=FMS+SharedObject ?!

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="TextSO ();">
	<mx:Script>
		<![CDATA[
			import flash.events.SyncEvent;
			import flash.events.NetStatusEvent;
			import flash.events.MouseEvent;
			import flash.net.SharedObject;
			import flash.net.NetConnection;

			private var text_so:SharedObject;
			private var nc:NetConnection;
			private var rtmpGo:String;
			private var good:Boolean;

			public function TextSO():void
			{
				button.label="Send";
				button.addEventListener(MouseEvent.CLICK, sendMsg);//为发送按钮添加发送事件
				/* 这里设置FMS服务器的连接地址,firstFMS即为,FMS安装目录下Applications下自己手动新建的一个文件夹名称,也是FMS的工程名 */
				rtmpGo="rtmp://localhost/firstFMS";
				nc=new NetConnection();
				//产生一个连接对象
				nc.connect(rtmpGo);
				//连接到上面的地址
				nc.addEventListener(NetStatusEvent.NET_STATUS, doSO);
			//加入连接的监听事件,以便根据连接返回的状态做相应处理
			}

			private function doSO(e:NetStatusEvent):void
			{
				good=e.info.code == "NetConnection.Connect.Success";
				/* 判断是否为连接成功状态连接返回的状态有好几种,大家可以参看FMS的文档,很详尽 */
				if (good)
				{
					/* 得到远程共享对象,false属性是设置共享的数据为非持久化的,即重启服务器后,先前的数据不会保存 */
					text_so=SharedObject.getRemote("test", nc.uri, false);
					text_so.connect(nc);
					/* 为共享对象添加异步事件,这也是服务器同步处理多客户端最关键的地方,一个客户端进行了什么操作,其它客户端也会有相应的变化,就是通过此事件来完成的 */
					text_so.addEventListener(SyncEvent.SYNC, checkSO);
				}
			}

			private function checkSO(e:SyncEvent):void
			{
				for(var chng:uint; chng < e.changeList.length; chng++)
				{
					switch(e.changeList[chng].code)
					{
						case "clear":
							break;

						case "success":
							trace(text_so.data.msg);
							break;

						case "change":
							//一个客户端改变数据会更新所有客户端
							textArea.htmlText+=text_so.data.msg + "\n";
							break;
					}
				}
			}

			private function sendMsg(e:MouseEvent):void
			{
				text_so.setProperty("msg", textInput.text);
				//将新的信息存入共享对象
				textArea.htmlText+=text_so.data.msg + "\n";
			//更新客户端的信息列表
			}
		]]>
	</mx:Script>
	<mx:VBox>
		<mx:TextArea id="textArea" width="200" height="200"/>
		<!--信息列表框-->
		<mx:TextInput id="textInput"/>
		<!--消息输入框-->
		<mx:Button id="button"/>
		<!--发送按钮-->
	</mx:VBox>
</mx:Application>
 

你可能感兴趣的:(.net,xml,Flex,Flash,Adobe)