读书人

FMS3系列(2):创建可交互的FMS连接-I

发布时间: 2012-12-21 12:03:49 作者: rapoo

FMS3系列(二):创建可交互的FMS连接--I can say:Hello World【转】

在做FMS开发中,flash客户端与FMS服务器通信交互数据等是常见的,比如flash客户端需要一播放一个视频,需要获得FMS发向flash端的一条消息等。那么我们要怎么才能实现flash客户端与FMS服务器建立可交互的连接、通信呢?

?????本文将以flash客户端于FMS服务器通信为核心,以经典的"Hello World"示例详细介绍flash客户端于FMS服务器通信的实现。要实现两端通信,在客户端和服务器端都需要编码,一边发起通信请求和接收通信响应信息(flash客户端),一端则提供接收请求进行业务处理等(FMS服务器端)。

?????首先从flash客户端入手,本文的实例非常简单,要实现的功能就是flash客户端向FMS服务器端发起请求,调用FMS服务器上的一个方法,然后将FMS服务器上的方法返回值输出到控制台。


?????flash端的开发可以有两种方式实现:Flash和Flex。本文会将这两种方式的实现都给出实例。首先看看Flash里的实现。
?????启动Flash CS开发环境,新建立ActionScript 3.0的Flash文件,如下图:
??????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】


?????然后在上面新建立的ActionScript 3.0的Flash文件上,按F9进入动作面板(输入程序代码的地方,当然也可以将代码封装到单独的类文件里),如下图:???? ???????? FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】

?

????? 上图中已经将通过Flash开发连接到FMS服务器的代码全部贴出,代码很简单。NetConnection这个类在 Flash Player 和 Flash Media Server 应用程序之间或者 Flash Player 和运行 Flash Remoting 的应用程序服务器之间创建双向连接。

  通过NetConnection建立于FMS服务器的连接,然后使用NetConnection类的公共方法connect()通过RTMP协议连接到指定的FMS服务器上指定的应用,如上图示为连接的FMS服务器上名为的“HelloWorld”的这个应用。如果对NetConnection还不熟悉的朋友请先阅读下我的这系列文章的第一篇:《FMS3系列(一):第一个FMS程序,连接到FMS服务器(Flash/Flex两种实现) 》,随后通过调用call()方法调用FMS服务器上的方法,这里通过调用服务器上提供的sayHelloWorld()方法。

?????Responder 类提供了一个对象,该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。详细见构造Responder对象的时候构造方法的参数,一个方法处理操作成功的逻辑,一个方法处理操作失败的逻辑。

?????OK,完成了上面的flash客户端的开发现在就只差FMS服务器端的开发了,FMS服务器理需要有一个通信文件来负责于flash客户端的连接交互,通常情况下就是建立一个main.asc的通信文件。本文中的通信文件的程序代码非常简单,就是接受客户端的连接,然后提供一个客户端调用的方法。完整代码入下:



?????下面是测试输出结果截图:
??????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】

  上面的实现是直接将代码写在Flash中,我们也可以将代码提取出来形成ActionScript文件(类),只要该类文件继承于显示对象,通过Flash CS3的新特性设置舞台文档类就可以调用了,下面是提取为ActionScript类的编程实现:

FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】<?xml?version="1.0"?encoding="utf-8"?>
?2FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】<mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute"?fontSize="12"?
?3FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????creationComplete="initApp()">
?4FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????<mx:Script>
?5FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????<![CDATA[
?6FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????import?mx.controls.Alert;
?7FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?var?nc:NetConnection;
?8FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?var?fmsServer:String="rtmp://localhost/HelloWorld";
?9FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?var?rs:Responder;
10FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
11FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?initApp():void
12FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
13FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc?=?new?NetConnection();
14FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc.connect(fmsServer);
15FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc.client=this;
16FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
17FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
18FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?onClick():void
19FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
20FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????rs?=?new?Responder(onSuccess,onFailed);
21FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc.call("sayHelloWorld",rs,"World");
22FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);
23FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler);
24FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
25FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
26FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?onStatus(evt:NetStatusEvent):void
27FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
28FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????Alert.show(evt.info.code);
29FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
30FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
31FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????public?function?onAsyncHandler(evt:AsyncErrorEvent):void
32FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
33FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????
34FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
35FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
36FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????/**//**
37FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】?????????????*?通信成功并返回结果时被调度
38FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】?????????????*/
39FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?onSuccess(result:Object):void
40FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
41FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????Alert.show(result.toString(),"调用结果");
42FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
43FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
44FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????/**//**
45FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】?????????????*?通信失败并返回结果时被调度
46FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】?????????????*/
47FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?onFailed(result:Object):void
48FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{
49FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????Alert.show(result.description);
50FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????????Alert.show(result.code);
51FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????}
52FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????
53FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????private?function?onBWDone(rs:Object):void
54FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????????FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】{}
55FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????]]>
56FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????????
57FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????</mx:Script>
58FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】????<mx:Button?x="91"?y="219"?label="Call"?click="onClick()"/>
59FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】</mx:Application>
60FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】
61FMS3系列(2):创建可交互的FMS连接-I can say:Hello World【转】

?

  在平时的开发当中,要与FMS服务器创建可交互的连接有很多种方式,本文只是简单的介绍了最基本的一种调用,希望本文对想学FMS开发的朋友有所帮助。

?

读书人网 >编程

热点推荐