官方最新《Red5 用户参考手册》全套下载地址
本文主要介绍如何在 Red5 里创建新应用,适用于 Red5 0.4.0 引入的新 API。
应用程序目录
Red5 将所有的应用程序以文件夹的形式放在 Red5 根目录下的 webapps 目录中。所以你创建新应用的第一件事就是去 webapps 目录下创建一个新的子文件夹。按约定这个文件夹应该与稍后的应用程序同名。
在你的新应用程序里,你需要创建一个包含有关于用到的类的配置的 WEB-INF 文件夹。你可以使用 Red5 提供的模板,在文件夹 doc/ templates/myapp 下。
Red5 在启动的时候,会寻找所有 webapps 目录下的包含配置文件的 WEB- INF 目录。
配置
加载的主要配置文件就是 web.xml,它包含有以下参数。
webAppRootKey
本应用的唯一名字,应该是一个公开的名字:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>/myapp</param-value>
</context-param>
处理程序配置
每个处理程序配置至少要包含三个 bean:
上下文
上下文 bean 具有保留名 web.context,被用于将访问路径映射到域,寻找服务和处理程序。它的默认实现类是 org.red5.server.Context。
上下文 bean 的默认配置如下:
<bean id="web.context" class="org.red5.server.Context"
autowire="byType" />
每个应用只能拥有一个上下文。但是同一个上下文可以在多个域中进行共享。
域
每个应用需要至少一个将处理程序链接到上下文和服务器的域。域用来创建一个树,客户端可以连接到这棵树的每一个节点并在这个域里进行对象共享(类似于共享的对象或者实时流)。你可以把域看做是 room 或者实例。
默认的域常常使用名字 web.scope,但这个名字可以进行任意选择。
这个 bean 具有以下属性:
- server 这个指的是全局服务器即 red5.server。
- parent 指的是当前域的父域,常常是 global.scope。
- context 当前域服务器的上下文,用的就是上面提到的 web.context。
- handler 当前域的处理程序(看下文)。
- contextPath 连接到当前域用到的路径。
- virtualHosts 一个使用逗号隔开的当前域运行在的主机名或者 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">
Create new applications in Red5
<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}" />
配置文件中所定义的 contextPath 可以当做当前域的根路径。
你可以在连接的时候在配置的路径之后添加附加元素来动态地创建附加域。
附加域共用同样地处理程序,但它们都拥有自己的属性、共享对象和实时流。
处理程序
每个上下文都需要一个实现了当客户端连接到域时调用到的方法的处理程序,上下文会保留这个具有可以被客户端再次调用的附加方法的处理程序。这些处理程序需要实现的接口是由 org.red5.server.api.IScopeHandler 定义,但如果你想控制对共享对象或流的访问的话你也可以用他们来实现其他接口。
一个可以用作基类的实现可以参考 org.red5.server.adapter.ApplicationAdapter。更多详细信息请参考其文档。
域的处理程序 bean 可以这样配置:
<bean id="web.handler"
class="the.path.to.my.Application"
singleton="true" />
日志
日志安装指南
原文链接: http://trac.red5.org/wiki/Documentation/UsersReferenceManual/Red5CoreTechnologies/01-Creating-New-Applications。