原理和代码都很简单,没什么好说的.
一:利用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);
}
}
分享到:
相关推荐
FMS+FLEX-----使用远程共享对象实现多人实时在线聊天 说明:这是我在网上看到的,收集并整理了一下。 因为我的积分不多了,所以虽然不是原创,但还是要一点资源分的。大家见谅。 压缩包中有说明文档和源码。说明...
【FMS聊天室下载FMS】相关知识点详解 FMS(Flash Media Server)是由Adobe公司开发的一款流媒体服务器软件,主要用于实时音频、视频的发布和交互。它支持HTTP Live Streaming (HLS)、RTMP(Real Time Messaging ...
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...
【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...
在本篇博文中,我们将深入探讨“FMS3系列”的第五部分,主要关注如何通过Adobe Flash Media Server (FMS) 3实现实时视频聊天功能。这个话题对于开发交互性强、实时性高的网络应用来说至关重要,特别是对于那些需要...
Flex和FMS3是构建实时互动应用程序的强大工具,尤其适合创建在线聊天室这样的实时通信平台。这个源码和文档集合提供了详细的步骤和技术说明,帮助开发者理解如何利用这些技术实现一个功能完备的聊天室。 Flex是一种...
《JUKI重机DDL-9000C-FMS-WB-PBN中文说明书》是针对JUKI公司的一款高端缝纫设备DDL-9000C-FMS-WB-PBN的操作指南,主要涵盖该设备的技术规格、操作方法、维护保养等方面的信息。以下是该设备的一些关键知识点: 1. *...
4. 互动功能:提供数据消息传递,实现用户间的交互,如聊天室、游戏等。 5. 安全性:FMS3提供访问控制、加密等安全措施,保护内容不被非法访问。 四、FMS3应用开发 1. Flex SDK:使用Flex SDK可以创建与FMS3交互的...
【标题】:“FMS制作聊天室例子”是一个关于利用Flash Media Server(FMS)构建实时聊天室的应用示例。FMS是Adobe公司提供的一款强大的流媒体服务器,它能够支持实时的音频、视频通信以及数据共享功能,非常适合用来...
【标题】"FMS聊天室+AS3.0"是一个基于Adobe Flash Media Server (FMS) 和ActionScript 3.0开发的多人在线聊天室应用。这个标题表明了该源代码是用于创建实时、交互式的多用户通信环境,让用户能够通过网络进行文字或...
Flex+FMS实现视频直播源码是一种基于Adobe Flex和Flash Media Server (FMS)技术的视频直播解决方案。这个项目提供了一个简单示例,演示了如何利用Flex进行摄像头和音频的捕获与录制,以及如何将这些内容实时推送到...
【ASP+FMS语音聊天室】是一种基于ASP技术与FMS(Flash Media Server)构建的实时在线聊天系统。ASP,全称Active Server Pages,是微软开发的一种服务器端脚本环境,用于生成动态网页。FMS则是Adobe公司提供的流媒体...
《PyPI与mypy-boto3-fms-1.11.11.0:Python类型检查与Boto3的完美结合》 PyPI(Python Package Index)是Python社区广泛使用的软件包仓库,它为开发者提供了发布、分享和发现Python模块的平台。PyPI上的资源“mypy-...
mypy通过静态分析代码来检查类型一致性,提供了一种在运行前发现错误的方式,提高了代码质量和可读性。 接着,我们来探讨boto3。boto3是AWS的全面且强大的Python客户端,它提供了对所有AWS服务的低级和高级访问。...
此外,FMS还提供了实时流传输协议(RTMP),用于实现实时的音视频通信,如在线教育、远程协作和游戏直播。 中文版的FMS针对中国用户的需求进行了本地化,使得操作界面和文档更加易于理解和使用。这对于中国开发者和...
总之,aws-cdk.aws-fms-1.138.0是Python开发者在AWS环境中实施云安全策略的得力助手,它通过编程的方式提高了安全策略的部署效率和一致性,让开发者能够更专注于创新,而不是繁琐的安全管理任务。对于那些重视安全并...
mypy-boto3-fms-1.16.9.0这个版本的库包含了对Boto3的FMS组件进行类型注解的实现,使得开发者在使用这个库时,IDE或代码编辑器能够提供更好的类型提示和错误检查。例如,当尝试调用一个不存在的方法或者传递错误类型...
标题中的"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 ...