`
lwhmellow
  • 浏览: 16482 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

[FMS]一步一步学Flash Media Server(一)(二)(三)

    博客分类:
  • FMS
阅读更多

(一)


从今天起,我们来学习一下 Flash Media Server,简称FMS,从名字上我们可以看出这是一个媒体服务器,其它简单点理解就是一个交互服务器,而且可以实现媒体方面的交互,我们可以利用它来完成一些网络版的FLASH程序,比如聊天室,网络版的不是很复杂的游戏,等等。

大家可以到如下地址下载最新的3.0版本:
http://www.adobe.com/products/flashmediainteractive/

当然这个版本是开发版,开发版和正式版的区别在于开发版只支持10个连接数,不过对于我们学习已经是足够了.

大家安装完之后,我们会在安装目录里看到applications和logs这两个目录,这个是我们用的最多的两个目录,applications是我们放服务端程序的地方,而logs是放日志文件的地方,日志文件对我们调试程序很有帮助.

大家也可以修改这两个文件的路径,当然要更改配置文件,在conf目录里放的都是配置文件,我们打开fms.ini这个文件我们会找到

VHOST.APPSDIR =
LOGGER.LOGDIR =
这两项就是更改applications和logs路径的地方,如比我们改成:

VHOST.APPSDIR = e: \fms\applications
LOGGER.LOGDIR = e:\fms\logs

那么我们就在e盘建立相应的目录把程序入在里面就可以了.

确定FMS的服务打开了,就可以运行了,FMS有两个服务,在安装完后在开始菜单我们可以找到Start Flash Media Administration Server 3 和 Start Adobe Flash Media Server 3 这两个打开服务的菜单,要打开服务点这两个就可以了,前一个是FMS管理服务,后一个是FMS服务,Stop Flash Media Administration Server 3和Stop Adobe Flash Media Server 3就是关闭这个服务的,默认状态下,在电脑刚启动里,这两个服务就会启动,当然也可以在windows的服务里面来启动和关闭服务.

Flash Media Administration Console这个菜单项是打开管理后台,管理后台对我们调试程序是很有作用的,打开这个之后是一个登录界面,要求输入用户名密码和服务器地址,用户名和密码是我们在安装FMS就输入的,服务器地址就是我们要连的装有FMS的地址,我们连接本机就用localhost或者127.0.0.1就可以了,如果我们在安装的时候改了它的默认端口(1935)的话,我们在地址上还要加端口,如果没有改端口这里就不用加了,输入用户名密码和服务器地址,我们就可以进入管理界面了,具体如何操作,我们在后面会讲到.

整个教程,我会用一个聊天室的例子来讲解如何使用FMS,当然我只能讲出我所知道的知识,不能完全讲出FMS的强大的功能.

下节我们接触FMS基本的结构,下节继续.
--------------------------------------------------------------------------------


(二)


今天我们来看一下FMS里面最重要的一个类---Application类.

Application类包含了有关一个Flash Media Server应用程序实例的信息,这些信息会一直维持直至这个应
用程序实例被卸载.

先看一下在Application类中常用的方法:

Application.acceptConnection()      接受一个来自客户机的至一个应用程序的连接。
Application.disconnect()                  从服务器断开一个客户机的连接。
Application.rejectConnection()       拒绝至一个应用程序的连接。
Application.shutdown()                    卸载应用程序实例。

再看一下在Application类中常用的属性:

Application.clients      一个对象,该对象包含了当前连接到这个应用程序的所有客户的一个列表。
Application.name       一个应用程序实例的名字。

最后看一下在Application类中常用的事件:

Application.onAppStart              当这个应用程序被服务器装载时调用。
Application.onAppStop              当这个应用程序被服务器卸载时调用。
Application.onConnect              当一个客户机连接到这个应用程序时调用。
Application.onDisconnect        当一个客户机从这个应用程序断开连接时调用。



(这些是比较常用的,还有其它一些,大家可以看FMS自带的文档)



我们来描述一下客户机连接的流程:



1.当第一个用户连接的时候,会启动服务端应该程序实例,这样就会触发Application.onAppStart事件,通常我们会里这个事件里做一些初如化的事情.

2.用户连接的时候会触发Application.onConnect事件,在这个事件里我们可以用Application.acceptConnection()方法来接受这个用户的连接,也可以用Application.rejectConnection()方法拒绝这个用户.

3.服务器想把一个用户断开的时候,可以用Application.disconnect()方法,当一个用户断开,不管是服务器把它断开,还是客户端自己断开,都会触发Application.onDisconnect事件.

4.使用Application.shutdown()方法可以卸载应用程序实例,当这个应该程序长时间(大概半个小时左右)没有客户端连接的时候,应该程序也会被卸载,当应该程序卸载的时候会触发Application.onAppStop事件.


我们写FMS程序时,大多数都是这样的流程.


下节继续.
--------------------------------------------------------------------------------


(三)


今天我们来看一下用AS 3连接FMS3的代码(这些代码其它对FMS2也是适用的).

这个例子我们不会去写FMS的代码,但我们需要建一个FMS应该程序,其实就是建一个目录,在FMS放应该程序的目录(applications)里建一个文件夹,我们后面要做聊天室的例子,所以我们就建一个名叫chat的目录.

接下来就是客户端的代码了,我们建一个chat.fla的FLASH文件,再建一个文档类Chat.as: 

package net.smilecn.chat{   
    
    import flash.display.Sprite;   
    import flash.net.NetConnection;   
    import flash.events.NetStatusEvent;   
       
    public class Chat extends Sprite{   
           
        private var nc:NetConnection;   
        private var rtmpUrl:String = "rtmp://localhost/chat";   
       
        public function Chat():void{   
            nc=new NetConnection();   
            nc.addEventListener (NetStatusEvent.NET_STATUS,netStatusHandler);   
            nc.connect (rtmpUrl);   
        }   
           
        private function netStatusHandler(event:NetStatusEvent):void{   
            trace(event.info.code);   
        }   
    }   
       
}  

package net.smilecn.chat{ 
    
    import flash.display.Sprite; 
    import flash.net.NetConnection; 
    import flash.events.NetStatusEvent; 
    
    public class Chat extends Sprite{ 
        
        private var nc:NetConnection; 
        private var rtmpUrl:String = "rtmp://localhost/chat"; 
    
        public function Chat():void{ 
            nc=new NetConnection(); 
            nc.addEventListener (NetStatusEvent.NET_STATUS,netStatusHandler); 
            nc.connect (rtmpUrl); 
        } 
        
        private function netStatusHandler(event:NetStatusEvent):void{ 
            trace(event.info.code); 
        } 
    } 
    
}

 这段代码里我们导入了一个NetConnection,这个类是FLASH里用于跟网络连接相关的操作,像我们连接FMS,remoting(我前面的一步一步学ActionScript 3[十六]里面有相关介绍).

NetStatusEvent是一个检测状态的事件

rtmpUrl是一个连接FMS的字符串,rtmp是FMS用的一个网络协议,localhost是服务器的IP,这里我们是本机,所以是localhost,如果放在网上,应该是你网上的IP,chat是应用程序名,就是之前我们建立的chat目录.这里我们完整的地址就是:rtmp://localhost/chat,其实如果是localhost,地址可以这样写:rtmpe:/localhost.

这个程序动行后会trace出NetConnection.Connect.Success,这个信息表示的是我们连接FMS成功了.

这是一个连接状态,event.info.code就是这个状态,相关的状态还有:

NetConnection.Connect.Closed  成功关闭连接。
NetConnection.Connect.Failed  连接尝试失败。
NetConnection.Connect.Rejected 连接尝试没有访问应用程序的权限。

这几个状态是我们用的比较多的,当然还有一些状态,在帮助里可以查到.

这是连接FMS最基本的代码,以后我们都会用到这些代码.下节继续.

转自:http://blog.smilecn.net/

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics