《Flash Media Server 中文文档——深入理解 Actionscript3.0 的 Native Bandwidth Detection》 在数字媒体领域,Flash Media Server (FMS) 是一个至关重要的工具,它为实时流媒体和交互式应用提供了强大的支持。在开发基于 FMS 的应用程序时,了解如何有效地检测和管理网络带宽是优化用户体验的关键。本文将深入探讨 Actionscript3.0 的原生带宽检测机制,并指导如何在实际应用中实施这一功能。 Actionscript3.0 的 Native Bandwidth Detection 是一种自动检测客户端与服务器间可用带宽的技术。在客户端成功连接到服务器后,通过调用 NetConnection.call() 方法启动带宽检测,无需额外的服务器端代码参与。以下是实现这一功能的具体步骤: 1. **配置 Application.xml**: 在 Application.xml 文件中,确保 `<BandwidthDetection enabled="true">`,这允许带宽检测功能。默认情况下,带宽检测是启用的。根据需要,你可以在 Application.xml 中自定义应用程序或虚拟主机上的应用程序配置,更多详情可参考 Adobe Flash Media Server 的配置管理向导。 2. **创建客户端事件处理类**: 编写一个 Actionscript3.0 类来处理带宽检测的事件。此类需实现两个函数:`onBWCheck()` 和 `onBWDone()`。`onBWCheck()` 函数用于初始化带宽检测,它必须返回一个值;`onBWDone()` 函数则在带宽检测完成后执行,可以在此处添加应用程序特定的逻辑。例如: ```actionscript class Client { public function onBWCheck(... rest):Number { return 0; } public function onBWDone(... rest):void { var p_bw:Number; if (rest.length > 0) p_bw = rest[0]; trace("bandwidth = " + p_bw + " Kbps."); // 应用程序逻辑 } } ``` 3. **创建主客户端类**: 创建一个 Actionscript3.0 的主类,如 `Bandwidth` 类,继承自 `Sprite`。在构造函数中,创建一个 `NetConnection` 对象,设置其 `client` 属性为 `Client` 类的实例,并连接到服务器。此外,还需要监听 `NetStatusEvent.NET_STATUS` 事件来触发带宽检测。 ```actionscript package { import flash.display.Sprite; import flash.net.NetConnection; import flash.events.NetStatusEvent; public class Bandwidth extends Sprite { private var nc:NetConnection; public function Bandwidth() { nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.client = new Client(); nc.connect("rtmp://localhost/FlashVideoApp"); } public function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { trace("The connection was made successfully"); nc.call("checkBandwidth", null); } else if (event.info.code == "NetConnection.Connect.Rejected") { trace("Sorry, the connection was rejected"); } } } } ``` 4. **触发带宽检测**: 在 `netStatusHandler()` 函数中,当连接成功("NetConnection.Connect.Success")时,调用 `NetConnection.call()` 方法,传入 "checkBandwidth" 命令启动带宽检测,参数 `null` 表示不需要响应器对象。 通过以上步骤,Actionscript3.0 的 Native Bandwidth Detection 能够在客户端与服务器之间动态调整数据传输速率,从而提供流畅的用户体验。对于需要实时流媒体和高互动性的应用,这是一个必不可少的特性。理解并熟练运用这一机制,将有助于开发者更好地优化 FMS 应用,提升服务质量和用户满意度。
剩余6页未读,继续阅读
- 粉丝: 87
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助