原理和代码都很简单,没什么好说的.
一:利用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聊天室FMS聊天室FMS聊天室
简易聊天室 flash多人聊天 FMS实现
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
利用flex和FMS建立聊天室,fms为源码
Flex和Fms3打造在线聊天室(利用NetConnection对象和SharedObject对象) 中文说明文档和代码, 简单明了好资料
By:闪闪威廉@nju中文版流媒体服务器---fms3教程。
asp+fms语音聊天室asp+fms语音聊天室
FMS制作聊天室例子,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
通过FMS实现时时视频聊天(Flash|Flex)源码
FMS-Comp-373---Object-Wiring-Using-Spring-源码.rar
NULL 博文链接:https://abstractforever.iteye.com/blog/524123
flash+fms2视频聊天室-附带源码 源码在 html页面上有下载的超链接
通过flex 和 fms开发的一个简易的调用摄像头和音频录制的例子。亲测可以用的。需要本地搭建一个fms服务器,并在flex中填写好fms服务器地址即可使用
SAP-FMS快速指南
FMS的最新版本已经到FMS 3了 ,本入门教程使用Flash Media Server 2 演示,但你可以很容易的升到 3,因为FMS 到 FMS3 的更新几乎没有什么改动 ,还有本教程客户端使用as1演示如果你需要用AS3的话,语法会有些变化,...
利用fms实现视频聊天程序,希望对和我一样的菜鸟们能有些帮助
FMS+AS3.0多人聊天室源文件下载。
python库。 资源全名:mypy-boto3-fms-1.14.54.1.tar.gz
python库。 资源全名:mypy-boto3-fms-1.16.9.0.tar.gz