扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
下面我们将通过实际制作一个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对象的类别的不同而不同。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=777808
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者