red5 与tomcat集成配置 简单入门实例

这里不再介绍什么是red5了,直接写配置。

我用的是red5 0.8版,首先从网上下载两个文件:red5-war-0.8.0.zip 和 setup-Red5-0.8.0.exe,将red5-war-0.8.0.zip 解压,得到root.war,

1.将root.war复制到tomcat安装目录下的webapps,解压到root文件夹,替换原来的root文件夹,启动tomcat,得到red5的测试页面,red5集成到tomcat完成。


2.安装 setup-Red5-0.8.0.exe.

3.下面来编写red5的测试项目。

4.新建Web项目HelloRed5(我是将集成了red5的tomcat配到Myeclipse,在Myeclipse编写项目), setup-Red5-0.8.0.exe的安装路径下找到red5.jar,boot.jar,复制到项目的lib下,再到tomcat的webapps\ROOT\WEB-INF\lib路径下复制所有的jar包到项目的lib下,到tomcat的webapps\ROOT\WEB-INF\classes目录下,将里面所有的配置文件复制到项目src下,将tomcat的webapps\ROOT\WEB-INF目录下复制web.xml到项目下,覆盖原来的web.xml.

此时,我们项目目录为:

5.然后我们编写后台的测试类:

package red5.example.red5server;

import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;

public class Application extends ApplicationAdapter {
	public boolean appConnect(IConnection conn, Object[] args) {
		System.out.println(" 连接");
		return true;
	}

	public String change(String str) {
		System.out.println(" 客户端调用服务器");
		return str.toUpperCase();// 传入的字符串转换成大写后返回
	}
}

5.下面我们来修改配置,使项目能成为一个red5的项目发布。

   首先,将web.xml中的

<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>/</param-value>
	</context-param>

修改为

	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>/HelloRed5</param-value> <!-- HelloRed5 为项目名  -->
	</context-param>
6.在src目录下新建一个HelloRed5-web.xml(HelloRed5为项目名),内容为

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans>  
  
    <bean id="web.context.red5Server" class="org.red5.server.Context">  
        <property name="scopeResolver" ref="red5.scopeResolver" />  
        <property name="clientRegistry" ref="global.clientRegistry" />  
        <property name="serviceInvoker" ref="global.serviceInvoker" />  
        <property name="mappingStrategy" ref="global.mappingStrategy" />  
    </bean>  
  
   <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.red5Server" />  
        <property name="handler" ref="web.handler.red5Server" />  
        <property name="contextPath" value="/HelloRed5" />   <!-- HelloRed5为项目名 -->
       <property name="virtualHosts"  
            value="*,localhost, localhost:8080, 127.0.0.1:8080" />  
    </bean>  
  
    <bean id="web.handler.red5Server"  
       class="red5.example.red5server.Application"/>  <!-- 此处配置的就是前面编写的测试类 -->
</beans>  

然后到root-web.xml中删除以下内容:

	<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="global.handler" />
		<property name="contextPath" value="/" />
		<property name="virtualHosts" value="*,localhost, localhost:8080, 127.0.0.1:8080" />
	</bean>
因为这个bean对象已经在HelloRed5-web.xml中定义好了。

7.到re5-core.xml中找到

	<!-- RTMP Mina Transport -->
	<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
		<property name="ioHandler" ref="rtmpMinaIoHandler" />
        <property name="connectors">
            <list>
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg index="0" type="java.lang.String" value="0.0.0.0" />  
                    <constructor-arg index="1" type="int" value="1935" />  
                </bean>
                <!-- You can now add additional ports and ip addresses
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg index="0" type="java.lang.String" value="0.0.0.0" />  
                    <constructor-arg index="1" type="int" value="1936" />  
                </bean>
                 -->
            </list>
        </property>		
		<property name="receiveBufferSize" value="65536" />
		<property name="sendBufferSize" value="271360" />
		<property name="eventThreadsCore" value="4" />
		<property name="eventThreadsMax" value="8" />
		<property name="eventThreadsQueue" value="-1 " />
		<property name="eventThreadsKeepalive" value="60" />
		<!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not
				enabled, polling will not occur. -->
		<property name="jmxPollInterval" value="1000" />
		<property name="tcpNoDelay" value="true" />
	</bean>

将其中<constructor-arg index="0" type="java.lang.String" value="0.0.0.0" />  中的value改为你电脑的IP地址,将其中 <constructor-arg index="1" type="int" value="1935" /> 中的value改为8080,如我的IP地址为10.21.2.127,则我将其修改为:

	<!-- RTMP Mina Transport -->
	<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
		<property name="ioHandler" ref="rtmpMinaIoHandler" />
        <property name="connectors">
            <list>
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg index="0" type="java.lang.String" value="10.21.2.127" />  
                    <constructor-arg index="1" type="int" value="8080" />  
                </bean>
                <!-- You can now add additional ports and ip addresses
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg index="0" type="java.lang.String" value="0.0.0.0" />  
                    <constructor-arg index="1" type="int" value="1936" />  
                </bean>
                 -->
            </list>
        </property>		
		<property name="receiveBufferSize" value="65536" />
		<property name="sendBufferSize" value="271360" />
		<property name="eventThreadsCore" value="4" />
		<property name="eventThreadsMax" value="8" />
		<property name="eventThreadsQueue" value="-1 " />
		<property name="eventThreadsKeepalive" value="60" />
		<!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not
				enabled, polling will not occur. -->
		<property name="jmxPollInterval" value="1000" />
		<property name="tcpNoDelay" value="true" />
	</bean>

8.将项目发布到tomcat中,如果启动成功,看到如下提示,则快成功了



9.接着我们编写客户端,新建一个flex项目,内容为:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
				fontSize="12" backgroundGradientAlphas="[1.0, 1.0]"
				backgroundGradientColors="[#FDF9F9, #FDF9F9]" width="442" height="344" creationComplete="init()">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private var rtmpURL:String="rtmp://10.21.2.127:8080/HelloRed5";
			private var conn:NetConnection=new NetConnection();
			private var isConnectSuccess:Boolean=false;

			
			/**
			 * 初始化时,连接到red5
			 */
			private function init():void{
				conn.addEventListener(NetStatusEvent.NET_STATUS,netStatus); //netStatus为回调函数
				conn.connect(rtmpURL);
			}
			
			private function netStatus(e:NetStatusEvent):void{
				Alert.show(e.info.code);
				if(e.info.code=="NetConnection.Connect.Success"){
					isConnectSuccess=true;
				}
			}
			
			private function click(e:MouseEvent):void{
				if(!isConnectSuccess){
					Alert.show("还没连接到服务器");
				}
				else{
					conn.call("change",new Responder(resultFun),str.text);//change 是服务器端方法名称,Responder包括对应的处理函数
				}
			}
			
			
			private function resultFun(object:String):void{
				trace(object);
				result.text=object.toString();
			}
			
		]]>
	</mx:Script>
	
	<mx:Label x="129" y="119" text="显示从服务器端返回的字符" id="result" width="160" fontSize="12"/>
	<mx:TextInput x="129" y="145" id="str" width="212"/>
	<mx:Button x="224" y="175" label="调用服务器方法" click="this.click(event)"/>
	
	
</mx:Application>

运行后看到以下效果,则成功了:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章