`
hacker47
  • 浏览: 340514 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

FLEX提高篇---------FMS两种方式实现简易聊天室

阅读更多

原理和代码都很简单,没什么好说的.

 

一:利用ShareObject的同步事件来将消息广播到所有客户端:

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="white" layout="vertical" initialize="BasicPracticeSO();">
	<mx:Script>
		<![CDATA[
			private var nc:NetConnection;
			private var shareObject:SharedObject;
			private var monthDay:Date;
			private var isConnectSuccess:Boolean;
			private static const RTMP_URL:String="rtmp://localhost/BasicSO";
			
			
			private function BasicPracticeSO():void{
				nc=new NetConnection;
				nc.connect(RTMP_URL);
				nc.addEventListener(NetStatusEvent.NET_STATUS,operateShareObject);
			}
			
			private function operateShareObject(evt:NetStatusEvent):void{
				isConnectSuccess=(evt.info.code=="NetConnection.Connect.Success");
				if(isConnectSuccess){
					shareObject=SharedObject.getRemote("userInfo",nc.uri,false);
					monthDay=new Date();
					shareObject.connect(nc);
					shareObject.addEventListener(SyncEvent.SYNC,detectSO);
				}
			}
			
			private function detectSO(e:SyncEvent):void{
				for(var chng:uint;chng<e.changeList.length;chng++){
				switch(e.changeList[chng].code){
					case "change":
						updateAllClientMsg();
						break;
					case "clear":
						break;
					case "success":
						break;
					default:
						break;
					}
				}
			}
			
			private function updateAllClientMsg():void{
				soList.text+=shareObject.data.msg+"\n";
			}
		
			
			private function addDataToShareObject():void{
				shareObject.setProperty("msg",msgText.text);
				soList.text+=msgText.text+"\n";
				msgText.text="";
			}
		]]>
	</mx:Script>
	<mx:Label text="ShareObject data:"/>
	<mx:TextArea id="soList" width="300" height="120">
		
	</mx:TextArea>
	<mx:Form>
		<mx:FormHeading label="add data to ShareObject:"/>
		<mx:FormItem label="msg:">
			<mx:TextInput id="msgText"/>
		</mx:FormItem>
		<mx:FormItem>
			<mx:Button label="send Msg" click="addDataToShareObject();"/>
		</mx:FormItem>
	</mx:Form>
</mx:Application>

 

 

二:在FMS服务端通过编码方试广播消息到所有客户端:

 

     1.客户端代码:

     

     

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="white" layout="vertical" initialize="initAppSO();">
	<mx:Script>
		<![CDATA[
			import com.client.ClientObj;
			private var nc:NetConnection;
			private var shareObject:SharedObject;
			private var monthDay:Date;
			private var isConnectSuccess:Boolean;
			private static const RTMP_URL:String="rtmp://localhost/BasicSO/chat";
			
			
			private function initAppSO():void{
				nc=new NetConnection;
				nc.connect(RTMP_URL);
				var clientObj:ClientObj=new ClientObj(soList);
				nc.client=clientObj;
				nc.addEventListener(NetStatusEvent.NET_STATUS,checkStatus);
			}
			
			private function checkStatus(evt:NetStatusEvent):void{
				isConnectSuccess=(evt.info.code=="NetConnection.Connect.Success");
				if(isConnectSuccess){
					soList.text+="connect success"+"\n";
				}
			}
			
			
			private function addDataToShareObject():void{
				var msg:String=msgText.text;
				var responder:Responder=new Responder(callback);
				nc.call("writeFile",responder,msg);
				msgText.text="";
			}
			
			private function callback(str:String):void{
				// ToDo something
			}
			
		]]>
	</mx:Script>
	<mx:Label text="chating list data:"/>
	<mx:TextArea id="soList" width="300" height="220">
	</mx:TextArea>
	<mx:HBox>
		<mx:Label text="msgText:"/>
		<mx:TextInput id="msgText"/>
		<mx:Button label="send Msg" click="addDataToShareObject();"/>
	</mx:HBox>
</mx:Application>

 

 

2.FMS服务器端代码:

 

这里我把聊天记录写到了服务器端的一个文件里.其实写不写都无所谓.

 

application.onAppStart=function(){
	trace("app is started");
};

application.onConnect=function(client,name){
	client.id=name;
	application.acceptConnection(client);
	var file=new File("chatfile.text");
	
	client.writeFile=function(msg){
		file.open("text","append");
		if(file.isOpen){
			msg=client.id+":"+client.ip+":say:\n"+msg;
			trace(msg);
			file.write(msg);
			file.close();
		}
		//client.call("serverToClient",null,msg);
		for(var i=0;i<application.clients.length;i++){
			application.clients[i].call("serverToClient",null,msg);
		}
	}
};


application.onDisconnect=function(client){
	
	for(var i=0;i<application.clients.length;i++){
		msg=application.clients[i].id+"  left!";
		application.clients[i].call("serverToClient",null,msg);
	}
}

 

5
3
分享到:
评论

相关推荐

    FMS+FLEX-----使用远程共享对象实现多人实时在线聊天

    FMS+FLEX-----使用远程共享对象实现多人实时在线聊天 说明:这是我在网上看到的,收集并整理了一下。 因为我的积分不多了,所以虽然不是原创,但还是要一点资源分的。大家见谅。 压缩包中有说明文档和源码。说明...

    FMS聊天室下载FMS

    【FMS聊天室下载FMS】相关知识点详解 FMS(Flash Media Server)是由Adobe公司开发的一款流媒体服务器软件,主要用于实时音频、视频的发布和交互。它支持HTTP Live Streaming (HLS)、RTMP(Real Time Messaging ...

    Flex +FMS实现视频聊天

    Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。

    fms.rar_flex_flex and fms_fms_fms rtmp_fms flex

    标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...

    简易聊天室flash多人聊天 FMS实现

    【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...

    FMS3系列(五):通过FMS实现时时视频聊天(Flash|Flex)

    在本篇博文中,我们将深入探讨“FMS3系列”的第五部分,主要关注如何通过Adobe Flash Media Server (FMS) 3实现实时视频聊天功能。这个话题对于开发交互性强、实时性高的网络应用来说至关重要,特别是对于那些需要...

    Flex和Fms3打造在线聊天室 源码和文档

    Flex和FMS3是构建实时互动应用程序的强大工具,尤其适合创建在线聊天室这样的实时通信平台。这个源码和文档集合提供了详细的步骤和技术说明,帮助开发者理解如何利用这些技术实现一个功能完备的聊天室。 Flex是一种...

    JUKI重机DDL-9000C-FMS-WB-PBN中文说明书.pdf

    《JUKI重机DDL-9000C-FMS-WB-PBN中文说明书》是针对JUKI公司的一款高端缝纫设备DDL-9000C-FMS-WB-PBN的操作指南,主要涵盖该设备的技术规格、操作方法、维护保养等方面的信息。以下是该设备的一些关键知识点: 1. *...

    流媒体服务器---fms3教程

    4. 互动功能:提供数据消息传递,实现用户间的交互,如聊天室、游戏等。 5. 安全性:FMS3提供访问控制、加密等安全措施,保护内容不被非法访问。 四、FMS3应用开发 1. Flex SDK:使用Flex SDK可以创建与FMS3交互的...

    FMS制作聊天室例子

    【标题】:“FMS制作聊天室例子”是一个关于利用Flash Media Server(FMS)构建实时聊天室的应用示例。FMS是Adobe公司提供的一款强大的流媒体服务器,它能够支持实时的音频、视频通信以及数据共享功能,非常适合用来...

    FMS聊天室+AS3.0

    【标题】"FMS聊天室+AS3.0"是一个基于Adobe Flash Media Server (FMS) 和ActionScript 3.0开发的多人在线聊天室应用。这个标题表明了该源代码是用于创建实时、交互式的多用户通信环境,让用户能够通过网络进行文字或...

    flex+fms实现视频直播源码

    Flex+FMS实现视频直播源码是一种基于Adobe Flex和Flash Media Server (FMS)技术的视频直播解决方案。这个项目提供了一个简单示例,演示了如何利用Flex进行摄像头和音频的捕获与录制,以及如何将这些内容实时推送到...

    asp+fms聊天室

    【ASP+FMS语音聊天室】是一种基于ASP技术与FMS(Flash Media Server)构建的实时在线聊天系统。ASP,全称Active Server Pages,是微软开发的一种服务器端脚本环境,用于生成动态网页。FMS则是Adobe公司提供的流媒体...

    PyPI 官网下载 | mypy-boto3-fms-1.11.11.0.tar.gz

    《PyPI与mypy-boto3-fms-1.11.11.0:Python类型检查与Boto3的完美结合》 PyPI(Python Package Index)是Python社区广泛使用的软件包仓库,它为开发者提供了发布、分享和发现Python模块的平台。PyPI上的资源“mypy-...

    Python库 | mypy-boto3-fms-1.10.42.1.tar.gz

    mypy通过静态分析代码来检查类型一致性,提供了一种在运行前发现错误的方式,提高了代码质量和可读性。 接着,我们来探讨boto3。boto3是AWS的全面且强大的Python客户端,它提供了对所有AWS服务的低级和高级访问。...

    FLEX资源------Flash Media Managment Server中文版下载

    此外,FMS还提供了实时流传输协议(RTMP),用于实现实时的音视频通信,如在线教育、远程协作和游戏直播。 中文版的FMS针对中国用户的需求进行了本地化,使得操作界面和文档更加易于理解和使用。这对于中国开发者和...

    Python库 | aws-cdk.aws-fms-1.138.0.tar.gz

    总之,aws-cdk.aws-fms-1.138.0是Python开发者在AWS环境中实施云安全策略的得力助手,它通过编程的方式提高了安全策略的部署效率和一致性,让开发者能够更专注于创新,而不是繁琐的安全管理任务。对于那些重视安全并...

    Python库 | mypy-boto3-fms-1.16.9.0.tar.gz

    mypy-boto3-fms-1.16.9.0这个版本的库包含了对Boto3的FMS组件进行类型注解的实现,使得开发者在使用这个库时,IDE或代码编辑器能够提供更好的类型提示和错误检查。例如,当尝试调用一个不存在的方法或者传递错误类型...

    PyPI 官网下载 | aws-cdk.aws-fms-1.106.0.tar.gz

    标题中的"PyPI 官网下载 | aws-cdk.aws-fms-1.106.0.tar.gz"表明这是一个在Python Package Index (PyPI) 官网上可以找到的软件包,名为`aws-cdk.aws-fms-1.106.0`,并且是以`.tar.gz`格式提供的。`aws-cdk`是Amazon ...

Global site tag (gtag.js) - Google Analytics