FMS教程.docx
- 文档编号:8238236
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:78
- 大小:258.53KB
FMS教程.docx
《FMS教程.docx》由会员分享,可在线阅读,更多相关《FMS教程.docx(78页珍藏版)》请在冰豆网上搜索。
FMS教程
第一章 开始
一、FlashCom开发所需安装的软件和硬件:
1.FlashMXauthoring
2.FlashMXCommunicationServer
3.ActionScripteditor(笔者推荐editplus)
4.FlashPlayer
5.CameraandMicophone
二、设置开发环境
1.确保FlashComserver已经启动
2.更改运行FlashComServer的URL地址
new_nc.connect('rtmp:
/video/room_01');//本地服务器
或者使用
new_nc.connect('rtmp:
//
如果使用simpleconnect组件,直接在组件的属性中设置即可
3.指定发布格式
一般为html和swf
4.书写client-side的as脚本,一般写在第一帧
5.书写server-side的asc脚本,一般为main.asc或组件对应的app_name.asc
6.加载组件,如果使用默认的组件,可以通过下面的语句简单加载
load('components.asc');//该文件在scriptlib目录下面
7.初始化client-side代码.给第一行添加下面代码
#include'Netdebug.as'
以便进行NetConnection调试(ps.新版的FlashComServer已经不包含netdebug.as文件,需要安装FlashRemote)
8.监视应用程序
通过FlashCom自带的应用程序管理器和管理工具来监控和管理[中文版见这里]
三、大致开发步骤
1.设定应用程序目录并在服务器端注册
在服务器端的application目录下建立相应的子目录就可以了(也就是项目main.asc文件所放置的目录了)记住服务器端的任何改动都需要重启FlashComServer才能生效
2. 在客户端建立链接
1. my_nc = new NetConnection();
my_nc.connect('rtmp:
//
2.
3.保存客户端的fla文件到任何地方(如果涉及后台交互的话建议保存在webserver目录下)
4.如果包含client端需要相应的server端的asc文件,请拷贝到server端的相应目录(建议保持和客户端相同的文件名,而只是后缀不同)
5.然后发布你的swf文件并运行
默认的服务器端asc文件存储位置在C:
\ProgramFiles\Macromedia\FlashMediaServer2\applications.当你需要创建一个应用程序时,就需要在applications下面建立子目录,存放下面的数据文件:
asc服务器端通信文件
flv 数据流播放文件
fso远程共享对象数据文件
客户端的swf和html(或者php等服务器文件)可以放在你指定的任何目录,在产品发布的时候需要移走fla源文件。
每一个应用程序的实例也位于不同的目录,如:
my_nc.connect('rtmp:
//
my_nc.connect('rtmp:
//
如果没有指定实例,客户端实际上连接到一个默认的名为_defInst_的实例,可以对不同的实例建立不同的共享对象
01:
//Oneinstanceofapplication'support'
02:
first_nc=newNetConnection();
03:
first_nc.connect('
04:
first_so=SharedObject.getRemote('CustomerInfo',first_nc.URI,false);
05:
first_so.connect(first_nc.URI);
06:
07:
//Anotherinstanceofapplication'support'
08:
second_nc=newNetConnection();
09:
second_nc.connect('
10:
second_so=SharedObject.getRemote('CustomerInfo',second_nc.URI,false);
11:
second_so.connect(second_nc.URI);
四、在FlashCom中使用的文件类型
1.ASC和JS文件服务端使用的文件类型
FlashCommunicationServer在服务端的scriptlib目录下提供了一个脚本库,包含了一些组件和FlashRemotingservices.的server端脚本
2.FLV和IDX文件视频播放文件和索引文件
3.SOL,SOR和FSO文件共享对象数据文件(依次为Local、Remote和两者)
一个简单的连接服务器示例
首先确保服务器已经启动,在windows下面可以直接启动服务就可以了。
在Linux下面需要运行serverstart命令启动。
在客户端写代码打开连接
my_nc=newNetConnection();//创建连接对象
my_nc.connect(targetURI);//连接服务器
参数格式为:
其中实例名可以省略
rtmp:
//localhost:
port/appName/instanceName//本地服务器
也可以省略前面的直接写成
rtmp:
/appName/instanceName
rtmp:
//host:
port/appName/instanceName//远程服务器
注意协议类型一定要使用rtmp,否则会连接失败
下面是一个简单的实现方法:
1:
//获取和设置摄像头
2:
client_cam=Camera.get();
3:
Live_video.attachVideo(client_cam);
//建立远程连接
1:
functiondoConnect(){
2:
client_nc=newNetConnection();
3:
client_nc.onStatus=function(info){
4:
trace('Level:
'+info.level+'Code:
'+info.code);
5:
}
6:
client_nc.connect('rtmp:
//localhost/doc_connect/room_01');
7:
}
//发布视频流
1:
functionpublishMe(){
2:
out_ns=newNetStream(_root.client_nc);
3:
out_ns.attachVideo(client_cam);
4:
out_ns.publish('myTestStream');//采用默认的live播放形式
5:
}
//播放视频流
1:
functionplayMe(){
2:
in_ns=newNetStream(_root.client_nc);
3:
Published_video.attachVideo(in_ns);
4:
in_ns.play('myTestStream');
5:
}
定义好这些函数后,就可以用下面的代码简单实现
1:
//Connecttotheserver
2:
doConnect();
3:
//Publishthelivestream
4:
publishMe();
5:
//Playbackthestreamfromtheserver
6:
playMe();
第二章FlashCommunicationServer结构概要
FlashCommunciationServer包含了server端(由一些asc文件组成)和client端(swf文件)
server端和client端的数据传输通过Real-TimeMessageProtocol(RTMP)进行实时交流,webserver通过http服务把内容提供给client端,实现模式如下图:
多用户可以连接到同一个应用程序Application
FlashCommunciationServer实际上为不同的用户之间提供了相互交流的通道。
基于客户/服务器模式的application,服务器端主要负责数据的传输,由客户端发送请求,服务器端执行数据查询和计算并返回结果值给客户端,通常需要保持长时间的连接。
FlashCommunciationServer提供了两种方法控制用户的更多交互:
数据流和共享对象.
数据流是指在服务器端和客户端同步传递的音频、视频和其它数据的信息流,数据流可以通过简单的发布和订阅方式实现。
一个发布的数据流可以实时的被看到(如视频),
也可以被录制下来以后播放。
录制的数据流被存为FlashVideo(FLV)格式,其中可以包含文本、音频和视频等信息。
当然你也可以把存在的通过第三方的软件录制的视频和音频文件转换为flv格式的文件。
共享对象
在FlashCom开发过程中可以使用两种共享对象:
本地和远程共享对象。
本地共享对象可以看作是Flashcookie,可以在用户的本地机器存放用户数据,其本身为Flashplayer提供,可以无须FlashComServer的支持。
远程共享对象是由FlashComServer来管理的,提供了信息和数据的同步,以及数据的存储。
Flash客户端连接、提交给远程共享对象,并且与服务器端保持同步。
信息数据还可以发布到所有连接到远程共享对象的客户端,并通过应用程序的session或临时文件持续。
更多的信息请参考共享对象类。
连接外部数据源
根据FlashCom的数据流和共享对象提供的交流模型,FlashComServer还可以和外部数据源交互,例如web服务器、关系数据库,甚至其它的FlashComServer应用程序。
例如,你可以写一个服务器端的脚本文件来连接一个web服务器或ColdFusion应用程序来接收一串用户名和电话号码的列表,然后把查询结果写入共享对象。
详细的方法后面的章节会描述。
创建和开发应用程序的流程
你可以使用FlashMX创作工具来创建应用程序的客户端组件,生成的swf文件提供了应用程序的用户界面,其中也包含了与FlashComServer连接和控制的as脚本。
服务器端则需要相关的应用程序目录,其中包含了运行客户端所需要的asc脚本,提供多个客户端之间逻辑控制和数据交换。
在开发应用程序的过程种,客户端程序需要发布到合适的位置以保证应用程序的正常运行,这通常要结合WebServer,如html、php、asp等,因为FlashComServer采用rtmp协议,所以webserver并非必须,你可以直接在swf文件中执行,但不推荐这样做。
服务器端程序(包含asc、flv等文件)需要放置到正确的应用程序目录下面。
如果你是一个FlashComServer管理员,你可以使用管理控制台来配置FlashComserver、设置系统安全、监视使用情况,停止和重启server,还可以添加用户。
这需要用来第一章提到的应用程序管理器和管理工具
下面内容主要讲述如果用如何通过客户端连接服务器,怎样访问共享对象,以及调用远程方法等。
当用户使用客户端的swf文件连接服务器时,服务器会加载应用程序,如果没有运行就创建实例。
服务器端接受连接之后,产生一个新的客户端对象回应该客户端应用程序,执行指定的服务器端脚本。
客户端需要做的是初始化数据流和共享对象等
连接流程
当客户端开始连接服务器后,服务器端会调用onAppStart方法(确保应用程序实例已经处于运行状态)
接下来,服务器端会回调客户端定义的onConnect方法,该方法的逻辑决定了是否接受该连接请求。
当客户端断开连接的时候,会调用服务器端的onDisconnect方法;当应用程序结束后,会调用onAppStop方法
远程方法调用
在连接成功之后,客户端可以调用服务器端组件定义的方法,服务器端也可以调用客户端组件中的方法。
每一个连接到服务器端的应用程序都作为一个服务器端的客户对象实例,每一个客户端的实例对象都可以通过NetConnect对象调用远程服务器的方法,然后服务器端可以回应并返回值给客户端。
从服务器端回调客户端的方法
从服务器回调客户端的方法比较类似于上面所说的。
在客户端,可以给NetConnect对象的实例自定义方法,在服务器端可以利用client.call的方式调用客户端的方法。
共享对象的使用
共享对象简化了在多用户之间共享数据的开发工作,一个Flash客户端要获取远程共享对象可以通过SharedObject.getRemote来指定连接,
然后通过SharedObject.connect连接远程共享对象,一旦连接成功,服务器端会发送同步信息给各个连接的客户端,客户端使用SharedObject.onSync来保持同步。
第三章使用对象
MacromediaFlashCommunicationServerMX1.5提供了两部分API,即客户端API和服务器端API。
本章主要讲述客户端API和服务器端API是怎样使用的。
也会涉及到共享对象的讨论,怎样存储关于应用程序和用户的相关信息。
概述FlashMXComServer的核心对象之后,我们也会重点描述一些类的细节内容,例如Camera,Microphone,NetStream,Stream,System和Video对象以及关于如何优化应用程序、保护客户端对象和使得NetConnection对象更安全。
客户端API提供了:
Camera(摄影机),Microphone(麦克风),NetConnection(联机),NetStream(串流),SharedObject(共享对象)和Video(视频).服务器端API提供了下面这些对象:
Application(应用程序),Client(客户端),NetConnection(联机),SharedObject(共享对象)和Stream(串流).
客户端对象
下面的对象只能用于客户端的as脚本中
Camera对象:
允许你从摄影机捕捉视频并追加到任何一个MC中,当使用FlashMxComserver的时候,还可以在联机对象间传输、显示,甚至录制捕捉到的视频。
应用这个特性,你可以开发例如视频会议、视频等应用程序。
Microphone对象:
该对象用于取得麦克风的声音来源,并且可以在联机对象之间传输、播放等,可以开发例如语音之类的应用程序,如果不使用联机对象,也可以把声音通过音箱在本地输出。
NetConnection对象:
允许Flash客户端通过TCPsocket与FlashComServer建立连接,并且使用RTMP(Real-
TimeMessagingProtocol,实时讯息通讯协议)交互数据。
NetStream对象:
在使用Netconnect对象所建立的联机对象上,进行数据、声音和视频信息的传输,就如同NetConnect的通道一样。
可以使用NetStream.publish方法来发步数据流,使用NetStream.play来播放接收到的数据流。
Localshared对象:
记录用户的资料,或者把讯息实时传递给所有联机用户。
Video对象:
用于显示通过NetStream.play方法或Camera.get方法捕捉到的视频流。
并通过Video.attachVideo方法把该视频对象放置到flash的舞台。
服务器端对象
Application对象:
包含应用程序实体的信息与状态,直到程序结束为止。
Application对象也可以让程序决定是否接收用户的联机或者关闭用户的联机,以及清除应用程序特定的流、清除在服务器端的共享对象,并让你在有效范围内访问整个应用程序的变量、定义相关事件所执行的函数等。
Client对象:
包含每个联机用户的信息,例如客户端的IP地址、Flash的版本信息、分配用户的频宽,或者呼叫客户端定义的方法等。
NetConnection对象:
可以在应用程序实体和服务器端,或者同一台服务器的另外一个应用程序之间创建一种双向的连接。
你甚至可以使用服务器端的NetConnection对象来创建更强大的应用程序,例如你可以获取天气信息从另一个应用程序服务器或者和其他的Flashcom服务器及应用程序实体共享加载。
使用联机对象,你可以使用标准的http协议或者rtmp协议在服务器之间交互和传递数据。
Remoteshared对象:
远程共享对象是在客户端建立的,但是可以在服务器端仍然可以使用,它可以实时地在客户端的多个应用程序之间共享和存储数据
SharedObject对象:
作用和客户端建立的远程共享对象一样,让不同联机用户能够通过服务器端的共享对象实时分享信息。
不过所提供的方法和客户端的有所区别。
例如,读取服务器端的共享对象要用get方法,设定存储资料不用data属性,而使用setproperty和getProperty方法,另外还有暂时锁住和解锁的方法lock和unlock,防止资料会覆写。
Stream对象:
处理影音串流,传回录像文件的时间秒数、呼叫客户端串流对象中的自定义方法、以及播放与录像等方法。
客户端和服务器端的对象交流
某些对象的方法是可以在客户端或者服务器端建立和相互调用。
例如当客户端的NetConnect对象联机到服务器端,服务器端的Netconnect对象同时也建立了,这个对象可以调用客户端NetConnect对象的副本的所有方法。
下面的表格显示了对应的调用关系
1. 客户端对象
2.my_nc (NetConnection object)
3. my_ns (NetStream object)
4. my_so (remote shared object)
5. 回应的服务器端对象
6.my_client (Client object or application.clients object)
7. my_server_stream (Stream object)
8. my_server_so (server-side shared object)
9.
下面表示了客户端的调用和服务器端的回应
1.
2.客户端的调用
3.my_nc.connect
4.my_nc.close
5.my_nc.call('doThing', myCallbackFcn, 1, 'foo')
6. my_so.send('doThing', 1, 'foo')
7. 服务器端的回应分别对应为
8.application.onConnect
9.application.onDisconnect
10.my_client.doThing(1, 'foo')
11. my_server_so.doThing(1, 'foo')
12.
下面显示了服务器端的调用和客户端的回应
1.
2.服务器端的调用
3.my_client.call ('doThing', myCallbackFcn,1, 'foo')
4. my_server_stream.send ('doThing', 1,'foo')
5. my_server_so.send('doThing', 1, 'foo')
6. 客户端的回应分别对应为
7. my_nc.doThing (1, 'foo')
8. my_ns.doThing (1, 'foo')
9. my_so.doThing(1, 'foo')
理解共享对象
共享对象可以存储任何Flash支持的数据类型。
就存放位置来说,共享对象可以分成存在客户端计算机的本地型,以及存放在服务器上的远程型。
你可以用它来记录用户的相关信息(如用户名、性别和其它设置参数等),或者用在服务器端,存储其它联机用户实时分享的信息
共享对象意味着用户可以在不同的用户之间、不同的同一台服务器上的应用程序实体。
FlashComserver支持三种不同的共享对象:
Local、remote和server-side。
下面简单介绍下这三个共享对象。
本地共享对象(Localsharedobject)
用于存取本地的数据,存储在用户的计算机硬盘中,并可以在不同的时间被其它应用程序访问。
本地共享对象的扩展名为.sol,默认的存储路径是c:
\documentsandSettings\登录名称\ApplicationData\Macromedia\FlashPlayer\服务器网域名称\影片路径\影片文件名.swf\。
本地共享对象也可以是短暂的,也就是说只有但应用程序运行时可用。
我们也可以不连接Flashcomserver而使用本地共享对象。
更多的本地共享对象的信息,可以参考手册中的SharedObject.getLocal方法。
建立和存取本地共享对象的方法如下:
1. var so= SharedObject.getLocal('myCookie') //建立本地共享对象
2.//存储资料
3.//注意:
不管是读取还是写入资料到本地共享对象,都必须通过data属性。
4. so.data.userName='liu21st';
5. so.data.msg='世纪流年';
6. so.data.counter=10;
7. //在默认状态下,以上资料并不会马上写入用户的磁盘,必须等到动画被关闭,或者用户离开你的网站后,才会写入磁盘。
如果要立即写入的话,必须使用flush方法。
如下:
8. so.flush();
确认资料是否存储成功可以通过onstatus事件来获取
返回的code值为
SharedObject.Flush
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FMS 教程