第一章 服务端动作脚本语言参考

第一章 服务端动作脚本语言参考 

服务端动作脚本是一种在服务器上的脚本语言,它能让你开发出高效和灵活的客户端Macromedia flash media server 的应用程序。举例来说,你可以使用服务端动作脚本去控制登入的流程,控制已经连接的flash应用程序的事件,决定用户在自己的flash应用程序能看到什么,还可以和其他服务器联系。你也可以使用服务端脚本允许和不允许用户访问的不同服务端应用程序资源和允许用户更新和共享信息。

服务端动作脚本是基于ECMA-262规范的(ECMAscript 1.5),它是从Javescript衍生出来的并且让你能够访问Javescript服务对象模型的核心。服务端动作脚本提供全局方法和类并且为开发多媒体应用程序提供富对象模型(a rich object model)。你也可以建立类,属性和方法。本书提供了关于类和它们属性、方法和事件的详细信息。

客户端动作脚本是基于ECMA-262规范的,但是在一些地方偏离了规范.服务端动作脚本没有从ECMA-262规范偏离。更多关于服务端动作脚本和客户端动作脚本的关系信息,请查看开发多媒体应用程序。

使用服务端动作脚本

要和flash media server应用程序一起使用服务端动作脚本,你需要写代码,把脚本文件加入到适当的服务器目录,并且运行swf文件去连接服务器。要理解Flash media server和它的应用程序的结构,请查看开发多媒体应用程序。

创建服务端动作脚本文件并且把它命名为main.asc。当应用程序被载入时,所有存在于脚本文件但不再函数体内的动作脚本代码只执行一次,而且在application.onAppStart处理事件被执行之前。

注意:你可以命名你的服务端动作脚本文件为app_name,这里app_name是你的应用程序目录的名字,并且保存为.asc或者.js文件类型。同样,所有在服务端的动作脚本文件里双字节字符(包括所有亚洲语言字符)必须为UTF-8编码。更多关于服务端脚本文件的信息,请查看开发多媒体应用程序。

注意:对于大型的应用程序,你或许需要使用若干的服务端脚本文件。你可以使用Flash Media Server存档编译有效部署这些文件为一个包从一个特定的位置。更多信息,请查看开发多媒体应用程序中的"存档和编译服务端脚本文件"。

注意:服务端脚本同样也有安全载入状态,某些关键代码可以在主要应用程序载入状态之前被载入。服务端脚本同样允许你建立受保护的对象(protected objects);这些对象的方法和数据不能被访问和操作。这里有两种状态允许你执行system calls去访问受保护关键的数据和函数。更多信息,请查看开发多媒体应用程序中"执行安全系统对象"。

安装和测试服务端动作脚本文件:

1. 确定Flash media server /applications目录。
   默认/applications目录的位置在flash media server产品的安装目录。

注意:如果你没有接受默认的安装设置并且你不确定/application目录的位置,目录位置被定义在Vhost.xml文件的AppsDir标签中。更多关于配置不同的应用程序目录的信息,请查看管理Flash media server。虽然你的SWF和HTML文件应该发布在web服务器目录下,但是你的服务端ASC文件,你的audio/video FLV文件和你的动作脚本FLA源文件不应该被浏览你web站点的用户访问到。

2. 你的服务端脚本文件必须被命名为main.asc, main.js, 注册的应用程序名字(registered_app_name.asc), 或者注册的应用程序名字(registered_app_name.js)。

3. 在/applications目录中建立子目录命名为appName, 这里的appName是你选择作为你Flash media server 应用程序文件名字的名字。在客户端动作脚本你必须为NetConnection.connect()方法传递这个名字做为参数。

4. 将main.asc文件放在appName目录中或者在appName目录中被命名为scripts的子目录中。

5. 在浏览器或者在独立的Flash Player中打开一个Flash应用程序(SWF文件)。
SWF文件必须包含动作脚本代码用来传递为NetConnection类的connect方法appName,像如下显示的例子:

nc = new NetConnection();
nc.connect("rtmp://flashcomsvr.mydomain.com/myFlashComAppName");

注意:你可以使用管理控制台检查应用程序是否载入成功。

使用命名规范

当你书写服务端动作脚本代码时,这里有一些命名规范在你命名你的应用程序,方法,属性和变量时必须使用。这些规则让你识别逻辑对象以便你的代码准确地执行。

命名应用程序

Flash Media Server应用程序的名字必须遵循Uniform Resource Identifier(URI) RFC 2396 协定。
这个协定支持分层次命名系统,这里正斜杠(/)用来分开层次元素。第一个元素指定应用程序名字。在应用程序名字后的元素指定应用程序实例的名字。每个应用程序的实例有它们自己的脚本环境。

指定实例

通过在应用程序名字后指定不同的应用程序实例名字,你可以运行一个单一应用程序的若干实例。举个例子,
rtmp:/support/session215指定了一个客户请求了命名为"support"的应用程序并且访问到一个指定的被命名为"seesion215"的应用程序实例。所有的连接到相同的名字实例的用户可以通过访问相同的流(streams)和共享对象(shared objects)来相互联系.

使用Javascript语法

你必须遵循所有的Javascript语法规则。举个例子,Javescript是大小写敏感并且在名字中不允许有标点符号除了底线(_)和美元符号($)。你可以在名字中使用数字,但是名字不可以用数字开头。

避免保留命令字符

Flash Media Server有保留命令字符你不可以用在脚本中。这些命令不是属于客户端NetConnection类的方法就是属于服务端Client类的方法。也就是说如果你有一个NetConnection对象在客户端(player),你不可以发起下面的对话:

nc.call("保留的命令(reservedCmd"), ....);

在这个对话中,"reserverdCmd"是如下的任何命令:closeStream, connect, createStream, deleteStream, onStatus, pause, play, publish, receiveAudio, receiveVideo, or seek。也不能是服务端Client类的任何方法:getBandWidthLimit, setBandwidthLimit, getStats, and ping

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值