Flex FMS应用(中)


三、 Flex连接到FMS服务器

     首先建立好Flex项目,默认会创建一个MXML文件,简单化实现这里就直接在这个MXML文件里来实现连接FMS。代码上和Flash连接到FMS几乎没有什么差别,主要就是学习NetConnection类来完成,如下代码定义:

1 // Flex与FMS建立连接的对象
2 private var netConn:NetConnection;
3 // FMS服务器的地址,使用rtmp协议
4 private var rtmpUrl:String = " rtmp://localhost/firstFMS " ; 


  NetConnection指示 Flash Player 是通过持久性的 RTMP 连接连接到服务器,实现这一步操作是通过NetConnection类的connect()方法来完成的。如下:

1 // 当Flex应用程序启动的时候就建立与FMS服务器的连接
2 internal function on Init (): void
3 {
4      netConn = new NetConnection();
5      netConn.connect(rtmpUrl);
6     netConn.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
7     netConn.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);
8 }   


  connect()方法打开指定rtmp协议地址的FMS服务器的连接。一旦调用该方法NetConnection的对象就会捕捉到FMS返回的一个网络连接状态,通过NetStatusEvent事件监听可以得到返回状态的值(详细见本文前Flash部分), AsyncErrorEvent事件为异步引发异常(既本机异步代码)时调度。关于NetConnection的各种状态的详细请查看本文之前的Flash实例有详细的介绍。

  由于实例比较简单,这里我就不在多说废话,下面是通过Flex实现连接到FMS的完整代码:


Flex代码 复制代码
  1. <?xml version= "1.0" encoding= "utf-8" ?>   
  2. <mx:Application xmlns:mx= "http://www.adobe.com/2006/mxml" layout= "absolute" >   
  3.      <mx:Script>   
  4.          <![CDATA[   
  5.              import mx.controls.Alert;   
  6.              //Flex与FMS建立连接的对象   
  7.              private var nc:NetConnection;   
  8.              //FMS服务器的地址,使用rtmp协议   
  9.              private var rtmpUrl:String= "rtmp://localhost/firstFMS" ;   
  10.              //当Flex应用程序启动的时候就建立与FMS服务器的连接   
  11.   
  12.              internal function onClick():void   
  13.              {   
  14.                  nc = new NetConnection();   
  15.                  nc.connect(rtmpUrl);   
  16. nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);                 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);   
  17.              }   
  18.   
  19.              private function onClickHandler(evt:MouseEvent):void   
  20.              {   
  21.                  trace( "正在连接FMS服务器" );   
  22.                  nc = new NetConnection();   
  23.                  nc.connect( "rtmp://localhost/firstFMS" );   
  24.                  nc.client=this;   
  25.                  nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);   
  26.                  nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);   
  27.              }   
  28.            
  29.              private function onNetStatusHandler(evt:NetStatusEvent):void   
  30.              {   
  31.                  switch (evt.info.code)   
  32.                  {   
  33.                      case "NetConnection.Connect.Success" :   
  34.                          trace( "成功连接FMS服务器!" );   
  35.                          break;   
  36.                      case "NetConnection.Connect.Rejected" :   
  37.                          trace ( "访问FMS服务器权限不足,连接被拒绝!" );   
  38.                          break;   
  39.                      case "NetConnection.Connect.InvalidApp" :   
  40.                          trace( "指定的应用程序名称没有找到" );   
  41.                          break;   
  42.                      case "NetConnection.Connect.Failed" :   
  43.                          trace( "连接失败!" );   
  44.                          break;   
  45.                      case "NetConnection.Connect.AppShutDown" :   
  46.                          trace( "服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!" );   
  47.                          break;   
  48.                      case "NetConnection.Connect.Closed" :   
  49.                          trace( "与FMS的连接中断!" );   
  50.                          break;   
  51.                  }   
  52.              }   
  53.                
  54.              private function onAsyncErrorHandler(evt:AsyncErrorEvent):void   
  55.              {}   
  56.      ]]>   
  57.      </mx:Script>   
  58.      <mx:Button x= "135" y= "89" label= "Button" click= "onClick()" fontSize= "12" fontWeight= "normal" />   
  59. </mx:Application>

你可能感兴趣的:(应用服务器,网络协议,网络应用,Flex,Flash)