对许多应用程序,现存包含和RED5不是相关的应用程序逻辑的类需要重用。为了使他们在客户端通过RTMP协议连接的时候可用,这些类需要作为RED5事件函数被注册。
现在有两种方法注册这些事件:
1. 把他们加到配备文件中;
2. 从应用程序中手动注册他们;
通过下面的代码事件函数被客户端执行:
Nc=new NetConnection(); Nc.connect(“rtmp://localhost/myapp”); Nc.call(“handler.method”,nc,”Hello world!”); |
如果一个事件被注册。Red5总是在检查上下文配备文件以前在定义范围内寻找他。
配备文件里的事件函数
方法最适合事件处理在应用程序运行范围,他们在应用程序寿命期间是不需要改变的。
注册类com.fancycode.red5.HandlerSample为事件sample,下面的bean需要加到web-inf/red5-web.xml中。
<bean id=”sample.service” Class=”com.fancycode.red5.HandlerSample” Singleton=”true”/> |
注:bean的id是由事件名称和关键字service构成。
应用程序代码里的事件
所有使用事件处理的应用程序在各种范围或者想要改变事件处理是不同的。从服务段代码需要一个方法注册他们。这些事件总是凌驾于在red5-web.xml中配置的事件。需要注册的方法在接口IServiceHnadlerProvider中被描述,通过ApplicationAdapter被执行。
Public Boolean appStart(IScope app){ If(!super.appStart(scope)) Return false;
Object handler=new com.fancycode.red5.HandlerSample(); App.registerServiceHandler(“sample”,handler); Return true; } |
注:在这个例子中,仅仅应用程序范围有sample事件,不适合子范围.如果事件在room中一样可用,必须在roomStart时在room范围内注册。