




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FMS3系列(二):创建可交互的FMS连接-I can say:Hello World 在做FMS开发中,flash客户端与FMS服务器通信交互数据等是常见的,比如flash客户端需要一播放一个视频,需要获得FMS发向flash端的一条消息等。那么我们要怎么才能实现flash客户端与FMS服务器建立可交互的连接、通信呢? 本文将以flash客户端于FMS服务器通信为核心,以经典的"Hello World"示例详细介绍flash客户端于FMS服务器通信的实现
2、。要实现两端通信,在客户端和服务器端都需要编码,一边发起通信请求和接收通信响应信息(flash客户端),一端则提供接收请求进行业务处理等(FMS服务器端)。 首先从flash客户端入手,本文的实例非常简单,要实现的功能就是flash客户端向FMS服务器端发起请求,调用FMS服务器上的一个方法,然后将FMS服务器上的方法返回值输出到控制台。 flash端的开发可以有两种方式实现:Flash和Flex。本文会将这两种方式的实现都给出实例。首先看看Flash里的实现。
3、60; 启动Flash CS开发环境,新建立ActionScript 3.0的Flash文件,如下图: 然后在上面新建立的ActionScript 3.0的Flash文件上,按F9进入动作面板(输入程序代码的地方,当然也可以将代码封装到单独的类文件里),如下图:
4、160; 上图中已经将通过Flash开发连接到FMS服务器的代码全部贴出,代码很简单。NetConnection这个类在 Flash Player 和 Flash Media Server 应用程序之间或者 Flash Player 和运行 Flash Remoting 的应用程序服务器之间创建双向连接。通过NetConnection建立于FMS服务器的连接,然后使用NetConnection类的公共方法connect()通过RTMP协议连接到指定的FMS服务器上指定的应用
5、,如上图示为连接的FMS服务器上名为的“HelloWorld”的这个应用。如果对NetConnection还不熟悉的朋友请先阅读下我的这系列文章的第一篇:FMS3系列(一):第一个FMS程序,连接到FMS服务器(Flash/Flex两种实现) ,随后通过调用call()方法调用FMS服务器上的方法,这里通过调用服务器上提供的sayHelloWorld()方法。 Responder 类提供了一个对象,该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。详细见构造Responder对
6、象的时候构造方法的参数,一个方法处理操作成功的逻辑,一个方法处理操作失败的逻辑。 OK,完成了上面的flash客户端的开发现在就只差FMS服务器端的开发了,FMS服务器理需要有一个通信文件来负责于flash客户端的连接交互,通常情况下就是建立一个main.asc的通信文件。本文中的通信文件的程序代码非常简单,就是接受客户端的连接,然后提供一个客户端调用的方法。完整代码入下:1 application.onConnect = function(client)2 3
7、 client.sayHelloWorld=function(str)4 5 return "I can say:Hello "+ str;6 7 this.acceptConnection(client
8、);8 通过上面的客户端和FMS服务器的开发,现在这样可以按Ctrl+Enter测试了,看看我们的flash小程序是否能够成功的连接到FMS服务器上指定的HelloWorld,并成功调用服务器端指定的方法呢?打开FMS管理控制台可以看到如下截图效果。OK,我们的小程序已经成功的连接到了FMS服务器上指定的应用(HelloWorld):
9、下面是测试输出结果截图: 上面的实现是直接将代码写在Flash中,我们也可以将代码提取出来形成ActionScript文件(类),只要该类文件继承于显示对象,通过Flash CS3的新特性设置舞台文档类就可以调用了,下面是提取为ActionScript类的编程实现: 1 package 2 3 import .*; 4
10、0; import flash.events.*; 5 import flash.display.*; 6 7 public class ClientCallServer extends Sprite 8 9
11、 private var nc:NetConnection;10 private var rs:Responder;11 public function ClientCallServer():void12
12、60; 13 nc=new NetConnection();14 rs=new Responder(onSuccess,onFailed);15
13、; nc.connect("rtmp:/localhost/HelloWorld");16 nc.client=this;17 nc.call("sayHelloWorld&quo
14、t;,rs,"World");18 19 20 private function onSuccess(rs:Object):void21
15、;22 trace(rs.toString();23 24 25 private function onFa
16、iled(rs:Object):void26 27 trace(rs.description();28 29 30 或许有的朋友已经习惯了使用Flex开发
17、,喜欢用拖拽控件的方式来完成一些常用的功能,其实在Flex下开发和Flash差别不是很大,其实在编码层次上是没什么区别的,不同的只是界面的呈现方式不一样。 1 private var nc:NetConnection; 2 private var fmsServer:String="rtmp:/localhost/HelloWorld" 3 private var rs:Responder; 4 5 private
18、 function initApp():void 6 7 nc = new NetConnection(); 8 nc.connect(fmsServer); 9 nc.client=this;10 在Flex下开发,建立好mxml后可以直接在其内部的<mx:Script>组件里编写ActionScr
19、ipt代码,如上定义了连接FMS服务器的NetConnection类的实例等。还定义了一个在Flex应用初始化的使用调用的方法initApp(),用来 完成flash客户端与FMS服务器的连接。1 private function onClick():void2 3 rs = new Responder(onSuccess,onFailed);4 nc.call("sayHelloWorld"
20、;,rs,"World");5 nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);6 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler);7 同Flash中开发一样,给Responder指定了成功和失败后的处理函数,详细如下:/* * 通信成功并返回结果时被调度 */private
21、160;function onSuccess(result:Object):void Alert.show(result.toString(),"调用结果");/* * 通信失败并返回结果时被调度 */private function onFailed(result:Object):void Alert.show(result.description); Alert.show(r
22、esult.code); 如上就完成了Flex中调用FMS服务器并调用FMS上所提供的方法,服务器端的程序和前面 Flash中的一样。到此我们只需要调用onClick()方法就可以测试了,通过一个按钮组件来调用,如下:<mx:Button x="91" y="219" label="Call" click="onClick()"/>完整的Flex代码 1<?xml version="1.0" enc
23、oding="utf-8"?> 2<mx:Application xmlns:mx=" 3 creationComplete="initApp()"> 4 <mx:Script> 5 <!CDATA 6
24、60; import mx.controls.Alert; 7 private var nc:NetConnection; 8 private var fmsServer:St
25、ring="rtmp:/localhost/HelloWorld" 9 private var rs:Responder;10 11 &
26、#160;private function initApp():void12 13 nc = new NetConnection();14
27、0; nc.connect(fmsServer);15 nc.client=this;16 17
28、60; 18 private function onClick():void19 20
29、0; rs = new Responder(onSuccess,onFailed);21 nc.call("sayHelloWorld",rs,"World");22
30、0; nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);23 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler);24
31、 25 26 private function onStatus(evt:NetStatusEvent):void27
32、 28 Alert.show(.code);29 30 31
33、160; public function onAsyncHandler(evt:AsyncErrorEvent):void32 33 34
34、160; 35 36 /*/*37 *
35、60;通信成功并返回结果时被调度38 */39 private function onSuccess(result:Object):void40
36、0;41 Alert.show(result.toString(),"调用结果");42 43 44 /*/*45 * 通信失败并返回结果时被调度46
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江省旅游投资集团有限公司事业部及共享中心面向社会招聘15人笔试参考题库附带答案详解
- 2025梅西合同范本
- 2025秋临川诗词学校教师聘用合同
- 人教版九年级化学上册-《爱护水资源》思维导图课件
- 沈阳五上数学期末试卷及答案
- 上海初一期中试卷及答案
- 山东聊城2024会考试卷及答案
- 雨污水管网系统常用产品及产品介绍
- 2025年中国氟塑料衬里数据监测报告
- 稀土金属压延加工的精度控制考核试卷
- 期中模拟卷(新疆专用)-2024-2025学年八年级英语下学期核心素养素质调研模拟练习试题(考试版)A4
- 甲状旁腺切除术后的护理措施
- 2024慢性鼻窦炎诊断和治疗指南解读课件
- (T8联考)2025届高三部分重点中学3月联合测评生物试卷(含答案详解)河北版
- 员工入职申请表(完整版)
- T-GDEIIA 56-2024 垂直起降低空航空器起降场基础设施配置技术要求
- 整本书阅读《林海雪原》【知识精研】六年级语文下册 (统编版五四制2024)
- 9《我的战友邱少云》说课稿-2024-2025学年六年级语文上册统编版
- 亚朵酒店前台培训
- 大学假期安全主题班会课件
- 创业培训讲师手册
评论
0/150
提交评论