Red5 怎样创建一个应用

[size=medium][color=red][b]应用文件夹[/b][/color][/size]
red5的应用都在“webapps”文件夹中,每个应用为一个文件夹。要创建应用,首先在“webapps”文件夹中新建一个文件夹,按照惯例文件夹名称就是应用的名称。
在新应用文件夹中新建一个“WEB-INF”文件夹,用来放置配置文件和类文件。你可以用Red5中"doc/templates/myapp"目录下的模板。
red5中“webapps”下的所有文件夹中都会有一个“WEB-INF”文件夹来放置配置文件。

[size=medium][color=red][b]配置[/b][/color][/size]
主配置文件为“web.xml”,参数如下:

[size=small][color=red][b]GlobalScope[/b][/color][/size]
globalScope参数值为default
<context-param>
<param-name>globalScope</param-name>
<param-value>default</param-value>
</context-param>

[size=small][color=red][b]contextConfigLocation[/b][/color][/size]
该参数指定了应用中的控制器(handler)配置文件。控制器(handler)配置文件指定了相关类,这个类用来通知应用程序客户端是连接或断开,同时提供客户端调用的方法。
另外,配置文件也指定了类的域结构。
指定配置文件可以使用通配符来指定多个文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/red5-*.xml</param-value>
</context-param>

[size=small][color=red][b]locatorFactorySelector[/b][/color][/size]
指定根应用程序上下文配置文件通常是"red5.xml":
<context-param>
<param-name>locatorFactorySelector</param-name>
<param-value>red5.xml</param-value>
</context-param>

[size=small][color=red][b]parentContextKey[/b][/color][/size]
父上下文名称,一般是“default.context”:
<context-param>
<param-name>parentContextKey</param-name>
<param-value>default.context</param-value>
</context-param>

[color=red][b]log4jConfigLocation[/b][/color]
指定logging文件
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>


[color=red][b]webAppRootKey[/b][/color]
应用的唯一名称,是一个公开的名称
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/myapp</param-value>
</context-param>


[color=red][size=medium][b]控制器配置(Handler configuration)[/b][/size][/color]
该配置文件必须至少包含三个beans:

[b][color=red]上下文(Context)[/color][/b]
context bean名称有个保留名web.context,用来映射路径到域,同时用来查找服务和控制器(handler)。默认的类为org.red5.server.Context
默认指定方式为:
<bean id="web.context" class="org.red5.server.Context" 
autowire="byType" />

每个应用程序只有唯一的上下文(context)。然而这个上下文(context)能跨多个域共享。

[color=red][b]域(Scopes)[/b][/color]
每个应用程序至少需要一个域(scope),用来将控制器(handler)关联到上下文(context)和服务器(server)。域用来建立一个树,这样客户端能够链接到每个节点和在域中共享对象(比如共享对象或直播流)。你可以将域成房间或实例。
默认的域(scope)通常名称为 web.scope,但是这个名字可以任意的选择。
这个bean有以下的属性:
server:设置全局服务器域red5.server
parent:设置父级域通常是global.scope.
context:设置服务上下文的域,即当前域, 用上面提到的web.context
handler:设置域的控制器(下面会提到)
contextPath:当连接到域的时候用到
virtualHosts:用逗号分割开,域(scope)运行的一组主机名或者IP地址
实例:
<bean id="web.scope" class="org.red5.server.WebScope"
init-method="register">
<property name="server" ref="red5.server" />
<property name="parent" ref="global.scope" />
<property name="context" ref="web.context" />
<property name="handler" ref="web.handler" />
<property name="contextPath" value="/myapp" />
<property name="virtualHosts" value="localhost, 127.0.0.1" />
</bean>

你可以将contextPath和virtualHosts的值放在独立的文件中。这样你需要另外一个bean
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/red5-web.properties" />
</bean>

比如一个 red5-web.properties含下面的数据
webapp.contextPath=/myapp
webapp.virtualHosts=localhost, 127.0.0.1

域的属性值可以这样设置:
<property name="contextPath" value="${webapp.contextPath}" />
<property name="virtualHosts" value="${webapp.virtualHosts}" />

[color=red][b][size=medium]控制器(Handlers)[/size][/b][/color]
每个上下文(context)需要一个控制器,控制器实现一个方法当客户端链接或断开到域的时候调用,同时可以增加客户端调用的方法。控制器需要实现org.red5.server.api.IScopeHandler接口,当然你也可以再实现另外的类来控制访问共享对象(shareobject)或流数据(streams).
基础类中org.red5.server.adapter.ApplicationAdapter实现了该接口,你可以通过查看api文档了解该类详情。
域控制器配置如下:
<bean id="web.handler" 
class="the.path.to.my.Application"
singleton="true" />

id参数值就是上面提到的设置。
如果你不需要在服务端实现任何逻辑,就可以使用red5提供的默认控制器:
<bean id="web.handler" 
class="org.red5.server.adapter.ApplicationAdapter"
singleton="true" />

[color=red][b][size=medium]简单例子[/size][/b][/color]
下面的控制器(handler)例子用了很少的代码实现:
package the.path.to.my;

import org.red5.server.adapter.ApplicationAdapter;

public class Application extends ApplicationAdapter {

public Double add(Double a, Double b){
return a + b;
}

}

假设控制器就如上面的,你能用下面的actionscipt调用:
nc = new NetConnection();
nc.connect("rtmp://localhost/myapp");
nc.onResult = function(obj) {
trace("The result is " + obj);
}
nc.call("add", nc, 1, 2);

得到的结果为:
The result is 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值