`
lileefun
  • 浏览: 5976 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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文件,如下图:

然后在上面新建立的ActionScript 3.0的Flash文件上,按F9进入动作面板(输入程序代码的地方,当然也可以将代码封装到单独的类文件里),如下图:        
   
上图中已经将通过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的通信文件。本文中的通信文件的程序代码非常简单,就是接受客户端的连接,然后提供一个客户端调用的方法。完整代码入下:
 application.onConnect = function(client)
 {
     client.sayHelloWorld=function(str)
     {
         return "I can say:Hello "+ str;
     }
       this.acceptConnection(client);
 }

通过上面的客户端和FMS服务器的开发,现在这样可以按Ctrl+Enter测试了,看看我们的flash小程序是否能够成功的连接到FMS服务器上指定的HelloWorld,并成功调用服务器端指定的方法呢?打开FMS管理控制台可以看到如下截图效果。OK,我们的小程序已经成功的连接到了FMS服务器上指定的应用(HelloWorld):

下面是测试输出结果截图:

上面的实现是直接将代码写在Flash中,我们也可以将代码提取出来形成ActionScript文件(类),只要该类文件继承于显示对象,通过 Flash CS3的新特性设置舞台文档类就可以调用了,下面是提取为ActionScript类的编程实现:
package
  {
      import flash.net.*;
      import flash.events.*;
      import flash.display.*;
      
      public class ClientCallServer extends Sprite
      {
          private var nc:NetConnection;
         private var rs:Responder;
         public function ClientCallServer():void
       {
             nc=new NetConnection();
             rs=new Responder(onSuccess,onFailed);
             nc.connect("rtmp://localhost/HelloWorld");
             nc.client=this;
             nc.call("sayHelloWorld",rs,"World");
         }
       
         private function onSuccess(rs:Object):void
         {
             trace(rs.toString());
         }
        
         private function onFailed(rs:Object):void
         {
             trace(rs.description());
         }
     }
 }
 



  或许有的朋友已经习惯了使用Flex开发,喜欢用拖拽控件的方式来完成一些常用的功能,其实在Flex下开发和Flash差别不是很大,其实在编码层次上是没什么区别的,不同的只是界面的呈现方式不一样。
  private var nc:NetConnection;
  private var fmsServer:String="rtmp://localhost/HelloWorld";
  private var rs:Responder;
  
  private function initApp():void
  {
      nc = new NetConnection();
      nc.connect(fmsServer);
      nc.client=this;
 }
 

  在Flex下开发,建立好mxml后可以直接在其内部的<mx:Script>组件里编写ActionScript代码,如上定义了连接FMS服务器的NetConnection类的实例等。还定义了一个在Flex应用初始化的使用调用的方法initApp(),用来 完成flash客户端与FMS服务器的连接。
 private function onClick():void
 {
     rs = new Responder(onSuccess,onFailed);
     nc.call("sayHelloWorld",rs,"World");
     nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);
     nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler);
 }
 


同Flash中开发一样,给Responder指定了成功和失败后的处理函数,详细如下:
/**
 * 通信成功并返回结果时被调度
 */
private function onSuccess(result:Object):void
{

    Alert.show(result.toString(),"调用结果");

}

/**
 * 通信失败并返回结果时被调度
 */
private function onFailed(result:Object):void
{
    Alert.show(result.description);
    Alert.show(result.code);
}
 



  如上就完成了Flex中调用FMS服务器并调用FMS上所提供的方法,服务器端的程序和前面 Flash中的一样。到此我们只需要调用onClick()方法就可以测试了,通过一个按钮组件来调用,如下:


<mx:Button x="91" y="219" label="Call" click="onClick()"/>
 

完整的Flex代码
 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" 
     creationComplete="initApp()">
     <mx:Script>
         <![CDATA[
             import mx.controls.Alert;
             private var nc:NetConnection;
             private var fmsServer:String="rtmp://localhost/HelloWorld";
             private var rs:Responder;
            
            private function initApp():void
            {
                nc = new NetConnection();
                nc.connect(fmsServer);
                nc.client=this;
            }
            
          private function onClick():void
            {
                rs = new Responder(onSuccess,onFailed);
                nc.call("sayHelloWorld",rs,"World");
                nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);
                nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler);
            }
            
            private function onStatus(evt:NetStatusEvent):void
            {
                Alert.show(evt.info.code);
            }
            
            public function onAsyncHandler(evt:AsyncErrorEvent):void
            {
               
            }
            
            /**//**
             * 通信成功并返回结果时被调度
             */
            private function onSuccess(result:Object):void
            {
                Alert.show(result.toString(),"调用结果");
            }
            
            /**//**
             * 通信失败并返回结果时被调度
             */
            private function onFailed(result:Object):void
            {
                Alert.show(result.description);
              Alert.show(result.code);
            }
            
           private function onBWDone(rs:Object):void
            {}
        ]]>
        
    </mx:Script>
    <mx:Button x="91" y="219" label="Call" click="onClick()"/>
</mx:Application>
 





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

装载自:http://www.cnblogs.com/beniao/archive/2009/03/11/1400077.html
分享到:
评论

相关推荐

    流媒体服务器---fms3教程

    2. ActionScript 3:FMS3与ActionScript 3紧密集成,开发者可以通过AS3代码控制服务器行为。 3. API接口:FMS3提供了丰富的API接口,允许开发者进行高级定制和扩展。 五、FMS3优化与维护 1. 性能监控:监控服务器...

    FMS3系列(五):通过FMS实现时时视频聊天(Flash|Flex)

    在本篇博文中,我们将深入探讨“FMS3系列”的第五部分,主要关注如何通过Adobe Flash Media Server (FMS) 3实现实时视频聊天功能。这个话题对于开发交互性强、实时性高的网络应用来说至关重要,特别是对于那些需要...

    Profibus教程-7.PROFIBUS-FMS.pdf

    1. 为智能现场设备设计:PROFIBUS-FMS专为连接智能设备而设计,包括可编程逻辑控制器(PLC)、个人计算机(PC)、人机界面(MMI)、工业PC(如VME)、输入/输出模块(I/O)等。 2. 应用服务功能强大:提供了一整套...

    FMS 4.5 + Flex mobile 之 Hello World 工程源代码

    在本文中,我们将深入探讨“FMS 4.5 + Flex mobile 之 Hello World 工程源代码”这一主题,这是针对Adobe Flash Media Server (FMS) 4.5 和 Flex移动开发的一个基础教程项目。这个项目包含了FMS服务器端的ASC脚本...

    FMS连接问题解决方案--完结版

    在本文中,我们将深入探讨如何解决与Adobe Flash Media Server (FMS)的连接问题,这些问题主要包括:连接失败、权限不足以及连接中断。FMS是一种强大的流媒体服务器,用于实时流传输、录制、播放和交互式应用程序。...

    FMS3中文翻译

    《FMS3中文翻译》文档主要介绍了Adobe Flash Media Server 3(简称FMS3)的基本概念、架构以及应用程序开发的关键要素。FMS3是一个强大的流媒体服务器,它提供了实时互动的富媒体应用平台,支持即时启动的视频流、...

    catia_v5r16_training_全套官方培训资料

    - **课程代码**:EDU-CAT-E-FMS-F-V5R16 - **内容简介**:重点介绍如何在CATIA中创建高质量的FEM表面模型,适用于薄壁结构的分析。 - **GAS: Generative Assembly Structural Analysis** - **课程代码**:EDU-...

    fms3视频教程.PDF

    ### FMS3视频教程知识点概览 #### 一、FMS简介及应用场景 - **FMS**(Flash Media Server)是Adobe公司推出的一款强大的媒体服务器软件,主要用于处理实时音视频流,支持多种协议如RTMP等,适用于视频聊天、视频...

    FMS.rar_flex_flex FMS_fms_site:www.pudn.com

    3. **FMS广播系统客户端.html**:对应于前端展示部分,可能包含如何与FMS服务器交互,进行视频播放的说明。 4. **FMS广播系统服务端.swf**:这是由Flex编译的SWF文件,是FMS服务端应用程序的运行时组件,负责处理...

    fms3中文文档

    ### FMS3中文文档知识点详解 #### 一、FMS3概述 - **产品定位**:Adobe Flash Media Server (FMS) 是一款专为实时音视频流传输设计的服务器软件,能够支持高质量的流媒体发布及接收。它适用于构建富媒体应用、在线...

    流媒体服务器FMS3.5

    流媒体服务器FMS3.5 sn:1373-5465-5574-9110-6240-7230

    2023年柔性制造系统(FMS)行业前瞻:机构的视角.pptx

    ##### 二、FMS技术趋势展望 - **技术应用领域**:FMS技术不仅应用于传统的工业制造领域,还扩展到了汽车制造、航空航天等行业。 - **技术优势**:FMS技术以其高效率、高灵活性和高精度的特点,在未来的制造业中占据...

    fms3 技术指南1&2

    《Flash+Media+Server+3技术指南_part1.pdf》和《Flash+Media+Server+3技术指南_part2.pdf》这两份文档共同构成了对FMS3全面而深入的指南,是学习和掌握FMS3不可或缺的参考资料。通过学习,你可以成为驾驭FMS3的专业...

    FMS3中文帮助文档

    这个压缩包包含一系列以中文编写的文档,如FMS3中文翻译1至10.doc,涵盖了从基础概念到高级应用的广泛内容。FMS3是一款强大的实时流媒体服务器,它支持AS3(ActionScript 3)编程,与Flash技术紧密集成,广泛应用于...

    FMS中文帮助文档

    3. **Flex与FMS交互**: - **Flash Player支持**:讨论Flash Player如何通过RTMP协议与FMS通信。 - **Flex SDK集成**:介绍如何使用Flex SDK创建与FMS交互的应用程序。 - **AMF通信**:讲解Action Message Format...

    FMS聊天室下载FMS

    FMS(Flash Media Server)是由Adobe公司开发的一款流媒体服务器软件,主要用于实时音频、视频的发布和交互。它支持HTTP Live Streaming (HLS)、RTMP(Real Time Messaging Protocol)、RTMPS(安全RTMP)等多种协议...

    JUKI重机DDL-9000C-FMS-WB-PBN中文说明书.pdf

    《JUKI重机DDL-9000C-FMS-WB-PBN中文说明书》是针对JUKI公司的一款高端缝纫设备DDL-9000C-FMS-WB-PBN的操作指南,主要涵盖该设备的技术规格、操作方法、维护保养等方面的信息。以下是该设备的一些关键知识点: 1. *...

Global site tag (gtag.js) - Google Analytics