Flash Communication Server起步

2006-03-08 15:48:37

下面让我们一起来学习一下怎样设置flashCommunicationServer的开发环境,怎样部署你的应用程序,最后让我们一起来创建一个简单的连接到服务器的应用程序。 要进行FCS应用程序的开发,必须安装Macromedia Flash MX,Flash Communication Server,以及最近发布的Flash Player。如果应用程序中需要抓取视频或者音频,还需要安装麦克风和摄像头。此外,如果应用程序需要撰写服务端脚本,像Macromedia DreamweaverMX这样,支持UTF-8编码的javascript编辑器也将需要安装。 在开始开发FCS应用程序之前,下列知识是必须知道的。 FCS服务器是否正在运行?如果要发布或者测试应用程序,FCS服务器必须运行。 指定服务器的URI。如果FlashMX和FCS安装在同一台计算机上,可以这样指定连接到服务器的URI: new_nc.connect(“rtmp:/doc_record/room_01”); 否则,需要指定服务器真实的的URI(例如,服务器运行在myServer.myDomain.com上),可以这样指定fcs连接: New_nc.connect(“rtmp://myServer.myDomain.com/doc_record/room_01”); 注意:确定rtmp后面是双斜线,只有在swf文件和FCS在同一计算机上时才可以使用单斜线。 指定发布格式。FlashMX可以将应用程序发布为swf文件或者html文件。选择文件>发布设置可以在发布时指定发布的格式。 撰写客户端AS代码。除非另有说明,客户端AS代码都应该写在FLA文件的第一帧的某layer上,而不是一个单独的对象。 撰写服务器段AS代码。如果应用程序有服务器段代码,它应该放在服务器段脚本文件之中。这个文件通常被命名为main.asc(或者类似registered_app_name.asc的文件名)。使用DWMX或者其他的javascript编辑器撰写撰写服务器段代码,请注意,服务器段代码同样是大小写敏感的。 加载component.asc。如果在应用程序中使用了通讯组件,必须加载位于scriptlib目录中的commponents.asc。 那么,怎样加载该文件了?首先创建一个服务器段脚本文件并保存为合适的文件名(例如main.asc),然后在文件的顶部增加下列代码: Load(“components.asc”); 小技巧:你可以复制应用的组件文件到应用程序目录下。 初始化客户端代码:在每个FLA文件的第一行增加下列代码: #include “Netdebug.as” 它可以让我们使用NetConnection调试器来跟踪streams或者shared objects在应用程序中的使用情况。在任何时候,你都可以删除这一行代码。 尊重用户的隐私。在开始记录或者广播任何图片或者声音,都应该获得图片/声音所有者的许可。 监视运行的程序:如果你是服务器的管理员,在程序运行期间,你可以查看程序的详细情况,比如log信息,so的值等等。在flashMX中打开Communictaion APP inspector面板,连接到FCS,选择要查看的应用程序实例,选择view Detail。 下面我们将通过实际制作一个FCS应用程序来认识FCS应用程序的开发过程。 下表列出了开发该应用程序需要完成的任务: 1、 为应用程序命名,并且在服务器上注册该应用程序。假如应用程序名为my_app,在FCS的applications目录下,创建一个以my_app命名的目录,my_app即在FCS上注册的应用程序名,而my_app目录就是注册的应用程序目录。 2、 在FlashMX中,创建一个FLA文件,它应该包含对新注册的应用程序my_app的URI的连接。通过建立一新NetConnection来完成这一步骤,如下. My_nc:NetConnection=New NetConnection(); My_nc.connect(“rtmp://mydomain/my_app”); 3、 保存该FLA文件。你可以将它保存在任何地方。在部署应用程序时,只需要FLA发布的swf文件。 4、 如果包括服务器端AS,需要将该脚本文件放在FCS服务器上的my_app目录下或者该目录的/scripts目录下。该文件应该被命名为main.asc或者my_app.asc。 5、 发布swf文件。Swf文件不需要放在fcs服务器上。你可以将它放在任何客户可以接触到的地方,比如,你可以通过email将该文件发送给你的客户。 或者,你的应用程序还有更多的步骤,不过无论如何,上述步骤对任何一个FCS应用程序来说都是必须的。 小技巧:Macromedia推荐使用不包括空格的小写字母为应用程序命名,这样无论你的应用程序在哪一种平台(windows/linux/macOS)上都可以正常使用。 下面将介绍如何让FCS应用程序数据能被服务器找到,以及怎样运行该应用程序实例。 保存服务器端文件和客户端文件 应用程序的服务端文件的默认位置在windows平台下应该在C:\Program files\Macromedia\Flash Communication Server MX\applications。通常,FCS应用程序应该放在该目录下的一个与应用程序同名的子目录下。在该子目录下放置应用程序数据——ASC文件,保存的流文件(flv),以及远程SO文件(FSO)。 至于客户端文件(SWFs和HTMLs),可以放在任何地方(通常都放在web服务器上),至于FLA文件,仅在开发应用程序时需要,发布时应该将该文件排除在外——最好是把该文件放在安全的地方。 在开发期间,可以将这些文件都放在一块。在发布应用程序时,ASC、FSO以及FLV文件必须保留在服务器上的应用程序目录中,只有swf和html文件需要发放给客户。 在任何一个案例中,都必须在applications目录下为应用程序创建一个同名的目录(即使应用程序没有服务器端脚本,因为FCS需要存储流文件或者shared object文件在该目录中),当客户端发送NetConnection.connect命令时可以找到应用程序。 下面的例子中,假设用户调用chat_app应用程序。 NetConnection.connect(“rtmp://myDomain/chat_App”); 注意:服务器端脚本文件的扩展名也可以是.js,如果这样,你可以把服务器端脚本文件放在应用程序目录下的scripts目录下。 使用应用程序实例 FCS应用程序的实例类似于ASP应用程序中的Session(会话),应用程序通过创建应用程序实例运行。当某个客户端连接到应用程序,它实际上是连接到应用程序的一个实例。例如客户端连接到一个名为chat_app的应用程序: nc.connect(“rtmp://myDomain.com/chat_app”); 因为没有指定实例,客户端实际上连接到一个默认的名为_defInst_的实例。 当然,也可以让客户端连接到指定的实例: nc.connect(“rtmp://myDomain.com/chat_app/instance1”); 在这里,客户端连接到的实例名为instance1。 通过指定实例名,可以让客户端在应用程序下“分组活动”。比较常见的是聊天程序中,根据主题的不同把不同的客户分成不同的房间(room),就像下面的例子中所展现的: My_nc.connect(“rtmp://myDomain /chatApp/room_01”); My_nc.connect(“rtmp://myDomain/chatApp/room_02”); 每个应用程序实例名都是独一无二的,与实例所在的应用程序不同,单独得实例不需要在服务器上定义自己的目录。可是,应用程序的资源,比如streams(流),shared objects,都独立于所有的实例,并被保存在自己的目录(应用程序可以设置streams和so存储的目录)中。 另一个使用实例的原因是,它可以避免应用程序在创建streams或者so是产生冲突。在上面的例子中,room_01创建的streams和so与room_2创建的stream、so是截然不同的,反之亦然,即使两个实例都同时运行在chatApp应用程序中。 例如,虽然support应用程序中的下列代码创建了两个同样名为CustomertInfo的so,support应用程序的不同实例都只会访问他自己的CustomerInfo对象。同样,session1和session2中的CustomerInfo数据是不同的。 first_nc = new NetConnection(); first_nc.connect("myserver.mydomain.com/support/session1"); first_so = SharedObject.getRemote("CustomerInfo", first_nc.URI, false); first_so.connect(first_nc.URI); second_nc = new NetConnection(); second_nc.connect("myserver.mydomain.com/support/session2"); second_so = SharedObject.getRemote("CustomerInfo", second_nc.URI, false); second_so.connect(second_nc.URI); 实际上,可以用任意字符串为应用程序中的实例命名。在FCS自带的教程中就有一个动态创建实例名的例子,代码可以参考tutorial_textchat目录下的tutorial_textchat.fla。 你可以调整与应用程序实例相关的设置。通过修改Application.xml文件比如实例超时时间的设定。在vhost.xml文件中,可以设置能够连接到位于此虚拟主机上的应用程序的客户数。 除了使用FlashMX创建的文件类型(fla,swf以及swd)之外,FCS使用或者创建下列文件类型: ASC和JS文件:由用户创作并且提供给FCS的服务器端脚本文件,比如components.asc。 fCS在/scriptlib目录下提供了一个脚本库,包含了组件和Flash Remoting Services使用的服务器端脚本。当你和commpontent(组件)或者Flash Remoting Services一起使用FCS时,请从/scriptlib目录中包含(include),或者加载(load)适当的脚本到应用程序的服务器端脚本文件中。/scriptlib目录的路径由Application.xml配置文件中的<ScriptLibPath>标签指定。 FLV和IDX文件:记录streams(流)的文件(flv),以及和flv关联的索引文件(IDX)。当服务器开始记录流时,他同时为指定的应用程序实例创建一个相应的子目录,并将flv文件和idx文件存放在该目录中,例如/applications/chat_app/streams/instance2 Sol,sor以及fso文件:记录客户端状态、服务器端状态或两者状态的so文件。So文件存储的位置依赖于so对象的类别的不同而不同。