FMS服务端与客户端之间的通信方式

FMS是Flash Media Server的简称,运用FMS技术可以实现******天、多人互动社区、网络游戏、网络教学软件、监控系统、web应用、会议系统等实时在线功能,以下简要介绍FMS所运用到的几种通信方式。

一、使用CALL方法

call方法又分为服务端和客户端两种方式,调用方式有所不同,以下给出例子说明:

首先,在服务端必须要有onConnect事件,否则会导致连接不成功。我们在applications目录下新建一个test的应用目录,此目录下放置一个main.asc文件,其内容如下:

application.onConnect=function(newClient){
application.acceptConnection(newClient);
newClient.call("RecNum", null,100);
}
Client.prototype.MSGChange=function(msg){
application.broadcastMsg("MSGChange",msg);
}

客户端函数的写法:

nc = new NetConnection();
nc.connect ("rtmp:/test");
nc.RecNum = function(Num){
trace(Num)
};
nc.call("MSGChange",null,"这是一个通信测试。");
nc.MSGChange= function(msg){
trace(msg)
};

1、服务端调用客户端函数

在服务端调用客户端函数RecNum,用的是newClient.call("RecNum", null,100),100是传递给函数RecNum的参数。

2、客户端调用服务端函数

客户端调用服务端函数所用的是nc.call("MSGChange",null,"这是一个通信测试。"),把字符串"这是一个通信测试。"传递给服务端的函数MSGChange,大家见到的

Client.prototype.MSGChange=function(msg){
application.broadcastMsg("MSGChange",msg);
}

就是在服务端定义好的供客户端调用的函数。

3、也许大家会对application.broadcastMsg()不熟悉,但它确实是个十分有用的服务端对象,使用它可以进行网络广播,只要客户端定义了MSGChange这个函数就会收到此信息并执行相应的动作,application.broadcastMsg()对象的使用方法已翻译并发表在论坛里,有兴趣的可以去看。

二、使用SEND方法

Send方法指的是SharedObject.send(),还是先把服务器端的脚本和客户端脚本先写出来再进行讲解。

服务端:

application.onAppStart=function(){
application.myShared_so = SharedObject.get("foo", true);
application.count=0;
}
application.onConnect=function(newClient){
application.count++;
application.acceptConnection(newClient);
application.myShared_so.send("onNewuser","User"+application.count+" add")
}

客户端:

nc = new NetConnection();
nc.connect ("rtmp:/test");
var my_so= SharedObject.getRemote("foo",nc.uri, true);
my_so.connect(nc);
my_so.send("doSomething", "this is a test");
my_so.doSomething = function(str) {
SO.text=str;
};
my_so.onNewuser=function(msg){
NewuserIP.text=msg;
}

1、服务端使用SEND方法

如服务器端脚本application.myShared_so.send("onNewuser","User"+application.count+" add"),当用户连接进来后,在线的用户可看到连接进来的用户编号,缺点是刚连进去的用户是收不到信息的。

2、客户端使用SEND方法

my_so.send("doSomething", "this is a test")发送字符串给doSomething函数,只要客户端拥有函数:
my_so.doSomething = function(str) {
SO.text=str;
};

就能收到信息"this is a test"。

三、信息的同步

说到信息的同步,我知道的一个方法就是使用SharedObject的onSync作为指示器,用来指示某些内容发生的改变,然后更新全部的内容。
在这里略为带过

my_so.onSync = function(list) {
sharedBall_mc._x= my_so.data.x;
sharedBall_mc._y= my_so.data.y;
}

sharedBall_mc的x和y坐标随my_so.data.x和my_so.data.y的改变而变化,这让我们可以看到对方对sharedBall_mc所进行的移动。

以上方式各有优缺点,具体使用何种方式要视具体情况而定。

转自:http://www.521blog.cn/article/82.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值