Flash Communication Server笔记一

原创 2006年06月07日 12:29:00

     要进行FCS应用程序的开发,必须安装Macromedia Flash MX,Flash Communication Server,以及最近发布的Flash Player。如果应用程序中需要抓取视频或者音频,还需要安装麦克风和摄像头。此外,如果应用程序需要撰写服务端脚本,像Macromedia DreamweaverMX这样,支持UTF-8编码的javascript编辑器也将需要安装。
      下面让我们一起来学习一下怎样设置flashCommunicationServer的开发环境,怎样部署你的应用程序,最后让我们一起来创建一个简单的连接到服务器的应用程序。下面让我们一起来学习一下怎样设置flashCommunicationServer的开发环境,怎样部署你的应用程序,最后让我们一起来创建一个简单的连接到服务器的应用程序。
          在开始开发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对象的类别的不同而不同。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

FCS(Flash Communication Server)

  • 2013-09-05 09:44
  • 10.44MB
  • 下载

VideoIO Flash-based audio and video communication

VideoIO Flash-based audio and video communication Home › Flash-VideoIO Tutorial ...

VideoIO Flash-based audio and video communication

VideoIO Flash-based audio and video communication Home What is Flash-VideoIO...

VideoIO Flash-based audio and video communication

VideoIO Flash-based audio and video communication Home › Flash-VideoIO Tutorial ...

一个轻量级Actor并发框架的c++实现, libgsc(Game Server Communication Library)(一)

市面上至有两个比较有名的Actor的开源实现, 一个是akka, 基于jvm

libgsc(Game Server Communication Library)(五)

这个版本基本上达到了我最早想要的效果: 简洁, 直观, 无锁, 并行, 高效.   高效不一定是运行时的效率,  更多的是开发效率.  也就是最少的bug 产生可能性, 最快的代码实现.  ...

libgsc(Game Server Communication Library)(二)

github中包括四个eclipse工程. ). libgmisc, 工具包, 常用函数等, 与业务无关. b). libgsc, libgsc的实现. c). gas, 一个游戏鉴权服务器的de...

libgsc(Game Server Communication Library)(三)

/*  * Db.cpp  *  *  Created on: Aug 6, 2014 5:26:14 PM  *      Author: xuzewen  */ #includ...

Flash – data communication

  • 2007-11-27 10:03
  • 288KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)