第二节FMS通信2.1 FMS基础知识我们在通信前学习下FMS服务端一些基础知识。
Application类
该类呢包含一个FMS应用程序实例的信息,这些信息会一直到应用程序实例被卸载为止。一个Flash Media Server应用程序的每一个实例都有一个application对象,这是Application类的一个单一实例。你不需要使用构造器函数来创建这个application对象;当一个应用程序由服务器例示时,application对象会被自动创建。
Application类大家也可以当成FMS服务器的主应用程序类,里面包含很多的事件,属性,方法等。这里呢我们只列举些我们本节需要学到,我们不可能上来什么都讲,我们记忆力是有限的,所以我们会采取讲到什么学什么,学以致用。
q Application.onAppStart 当这个应用程序被服务器装载时调用。意思就是首次调用!
q Application.onAppStop 当这个应用程序被服务器卸载时调用。当我们服务器关闭时候应用程序就会被卸载,就会触发该事件。
q Application.onConnect 当一个客户机连接到这个应用程序时调用。就是当一个客户端连接到服务端,就会触发该事件。
2.2 FMS 进行通信1.下面我们来先写客户端,我们接着上一个项目开始新建文件,如图2.1所示:
图2.1 新建应用程序
2.然后呢弹出个对话框,里面输入应用程序名称,这里呢名字随意起,如图2.2所示:
图2.2 应用程序名称
3.在写程序之前我们先在我们FMS安装文件的根目录下的applications文件夹里建立个文件夹存放我们该项目的服务端程序,在这里我新建了个文件夹名为”test”,如图2.3所示:
如图2.3新建文件夹test
4.打开我们刚建立好的应用程序,在舞台拉入一个按钮,或者手动敲入一个按钮标签,命为“连接FMS”(名字大家可以随意),设置了垂直,水平间距为0,然后在添加个单击事件,当我们单击按钮则进行连接FMS代码如下:
<s:Button label="连接FMS" verticalCenter="0" horizontalCenter="0" click="connect()"/>
5.下面则开始写单击连接按钮事件代码:
<fx:Script>
<![CDATA[
import mx.controls.Alert;
//NetConnection 类在客户端和服务器之间创建双向连接。
private var netconnect:NetConnection = new NetConnection();
private function connect():void
{
//该事件表达连接其状态或错误条件时调度。netStatus 事件包含一个 info 属性,
//该属性是一个包含事件特定信息(例如,连接尝试成功还是失败)的信息对象。
netconnect.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
//该函数是填写连接地址,或者参数,该函数运行后就会开始自动连接
netconnect.connect("rtmp://localhost/test");
}
private function netStatusHandler(e:NetStatusEvent):void
{
//我们弹出连接FMS时的状态信息
Alert.show(e.info.code);
}
]]>
</fx:Script>
大家开始连接地址后面还带了“test”这个就是我们刚刚建立的根目录的文件夹,我们项目要连接时候都的写具体项目路径,因为我们在该路径还要写服务端程序呢,亲!
再来我们就看下事件的info属性集合:
好了该讲的东西都讲到了,下面开始运行看下效果,如图 2.4 所示:
图2.4 运行效果
在单击按钮看下结果如图 2.5 所示:
图2.5连接状态
我们可以对照刚才发的状态来找,可以看到这个状态是代表连接成功,如果大家运行是这种效果就是成功的。
下面我们打开 FMS 安装根目录打开“ tools ”目录,在打开“ fms_adminConsole.swf ”文件,输入账号和密码就进入到后台,如图 2.6 所示:
图2.6 后台效果
下面我们开始编写服务端代码首先打开 FLASH 软件,如图 2.7 所示:
图2.7 FLASH 界面
然后单击菜单上的文件选择,新建选项,如图 2.8 所示:
图 2.8 新建选项
然后会弹出可以新建文件的弹出框,选择通信文件。如图 2.9 所示:
图 2.9新建通信文件
然后保存下,保存到根目录 application/test 目录,命名最好为“ main.asc ”,如图 2.10 所示:
图2.10 命名
下面看下具体事件方法用途:
Application.onAppStart
可用性
Flash Communication Server MX
用法
application.onAppStart = function (){}
参数
无
返回
无
描述
事件处理器。当服务器第一次装载这个应用程序实例时调用。你使用这个处理器来初始化一个应用程序的状态。
Application.onAppStop
可用性
Flash Communication Server MX
用法
application.onAppStop = function (info){}
参数
info 一个信息对象,它解释了为什么这个应用程序会被停止运行。参看“服务器端信息对象”。
返回
值通过你定义的函数被返回,如果有的话;否则,将返回 null。要拒绝卸载这个应用程序,返回false;
要卸载这个应用程序,返回 true或任何非false值。
描述
事件处理器。当这个应用程序就要被服务器卸载时调用。你可以定义一个当这个事件处理器被调用时要执行的函数。
如果函数返回 true,则这个应用程序被卸载。如果函数返回false,则这个应用程序没有被卸载。如果你没有为这个事件
处理器定义一个函数,或是如果返回值不是一个布尔值,则当这个事件被调用时这个应用程序会被卸载。
Application.onConnect
可用性
Flash Communication Server MX
用法
application.onConnect = function (clientObj [, p1, ..., pN]){}
参数
clientObj 连接到这个应用程序的客户机。
p1 ..., pN 传递给application.onConnect方法的可选的参数。当一个客户机连接到这个应用程序时,这些参数自客户机端的
NetConnection.connect方法传递而来。
返回
返回你提供的值。
例如,通过在你的application.onConnect事件处理器中作一个对一个应用程序服务器的NetConnection调用,并依赖于答复处理器接
收到的信息,让答复处理器调用application.acceptConnection或application.rejectConnection来执行一个外部的身份验证。
然后在文件里填写下面代码:
/*
*
* 当这个应用程序被服务器装载时调用。意思就是首次调用!
*
*/
application.onAppStart = function()
{
trace("该事件一般用在初始化对象中使用!");
}
/*
*
* 来接受客户机的连接
*
*/
application.onConnect = function(client)
{
trace("终于算是连接上了!");
//该方法是接受客户端的连接
application.acceptConnection(client);
}
/*
*
* 当这个应用程序被服务器卸载时调用。意思就是最后次调用!
*
*/
application.onAppStop = function(info)
{
trace("该应用程序将被卸载!"+info);
}
上面都有注释不难理解吧,好了我们打开 FMS 后台进行观看,然后按 F11 运行 FB 的内容,单击下“连接 FMS ”按钮,我们来看下后台情况,如图 2.11 所示:
图2.11 演示成功连接上
我们可以看到我们在接受客户端事件里的代码成功运行,但是初始化和卸载事件并没运行,提示下用 application.onAppStart和application.onAppStop来初始化和清除一个应用程序中的全局变量,因为这些事件在一个应用程序实例的生命期中都只被调用一次。 我们单击下刷新按钮
图2.12 刷新结果
我们可以看到刷新后我们可以看到开始和结束函数同时被运行了,在看下运行 FB 的页面如图 2.13 所示:
图2.13 FB 运行效果
我们可以看到刷新后程序就会进行断开连接,下面我们演示下客户端连接时候向服务端传送参数 :
客户端:
//该函数是填写连接地址,或者参数,该函数运行后就会开始自动连接
netconnect.connect("rtmp://localhost/test","ken");
服务端:
/*
*
* 来接受客户机的连接,第一个参数是客户端对象,第二个参数就是客户端传递过来的参数
*
*/
application.onConnect = function(client,str)
{
trace(str+"终于算是连接上了!");
//该方法是接受客户端的连接
application.acceptConnection(client);
}
这次我们在运行下看下效果,如图2.14所示:
图2.14 最终效果
大家看到参数也传递成功,本节就到这里吧。下回合见!
最后在宣传下《As-Flex and Flash从入门到精通》初级教程如果大家喜欢
http://product.china-pub.com/3502720
该地址进行浏览下