一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

RED5學習筆記(二):RED5項目配置

 深入敵后_ 2013-02-25

RED5學習筆記(二):RED5項目配置

服務(wù)器端:

red5的項目的建立與tomact非常的相似.

1、在 Red5的安裝路徑C:\Program Files\Red5\webapps下建立自己的項目文件夾:

2、將C:\Program Files\Red5\doc\templates\myapp下的文件夾WEB-INF復(fù)制到自己的項目中,WEB-INF里是red5主要的項目配置文件。

3、 在WEB-INF下建立classes以及src文件夾。

4、在項目根目錄下建立Eclipes項目。classes為編譯目錄,src為源碼目錄。

5、導入red5 jar包。

 

 6、修改配置文件:

web.xml文件

復(fù)制代碼
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 
   
xmlns="http://java./xml/ns/j2ee" 
   xmlns:xsi
="http://www./2001/XMLSchema-instance"
   xsi:schemaLocation
="http://java./xml/ns/j2ee http://java./xml/ns/j2ee/web-app_2_4.xsd" 
   version
="2.4"> 

    
<display-name>My sample Red5 application</display-name>

    
<context-param>
        
<param-name>globalScope</param-name>
        
<param-value>default</param-value>
    
</context-param>

    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>/WEB-INF/red5-*.xml</param-value>
    
</context-param>

    
<context-param>
        
<param-name>locatorFactorySelector</param-name>
        
<param-value>red5.xml</param-value>
    
</context-param>

    
<context-param>
        
<param-name>parentContextKey</param-name>
        
<param-value>default.context</param-value>
    
</context-param>
    
   
    <!--如果不注釋需要導入log4j的jar包。。。。。。。一定小心
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
    
-->
    
    
<context-param>
        
<param-name>webAppRootKey</param-name>
        
<param-value>/chatApp</param-value>
    
</context-param>
    
    
    
<!-- 
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    
-->
    
    
    
<listener>
        
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    
</listener>

    
<!-- remove the following servlet tags if you want to disable remoting for this application -->
    
<servlet>
        
<servlet-name>gateway</servlet-name>
        
<servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>
    
</servlet>
    
    
<servlet-mapping>
        
<servlet-name>gateway</servlet-name>
        
<url-pattern>/gateway</url-pattern>
    
</servlet-mapping>

    
<security-constraint>
        
<web-resource-collection>
            
<web-resource-name>Forbidden</web-resource-name>
            
<url-pattern>/streams/*</url-pattern>
        
</web-resource-collection>
        
<auth-constraint/>
    
</security-constraint>

</web-app>
復(fù)制代碼

 red5-web.xml

復(fù)制代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd">
<beans>
    
    
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        
<property name="location" value="/WEB-INF/red5-web.properties" />
    
</bean>
    
    
<bean id="web.context" class="org.red5.server.Context" 
        autowire
="byType" />
    
    
<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="${webapp.contextPath}" />
        
<property name="virtualHosts" value="${webapp.virtualHosts}" />
    
</bean>
<!-------項目的主類--------->
    
<bean id="web.handler" 
        class
="com.papaya.Application" 
        singleton
="true" />

    
<!-- this will support calling methods through "myhandler.<methodName>" -->
    
    
<!--  
    <bean id="myhandler.service" 
        class="the.path.to.my.ServiceHandler" 
        singleton="true" />
    
-->

</beans>
復(fù)制代碼

 red5-web.properties

webapp.contextPath=/chatApp
webapp.virtualHosts=localhost, 127.0.0.1

 7、建立程序的入口類

 Application.java

復(fù)制代碼
package com.papaya;

import org.red5.io.utils.ObjectMap;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IScope;

import com.papaya.VO.MapConventPojo;
import com.papaya.VO.User;

public class Application extends ApplicationAdapter 
{
        
public String sayHello(String name)
        {
            System.out.println(
"hello"+name);
            
return "hello"+name;
        }
        
        
public boolean appStart(IScope scope)
        {
            System.out.println(
"聊天服務(wù)器啟動了!!!!");
            
return true;
        }
        
        
public Object sendVo(ObjectMap message)
        {
            User user 
=new User();
            MapConventPojo.Convent(message, user);
            System.out.println(user.getAge());
            System.out.println(user.getName());
            System.out.println(user.getSchool());
            
return user;
            
            
        }
        
}
復(fù)制代碼

8、建立客戶端flash類

 

復(fù)制代碼
package com.renaun.samples.net
{
import com.game.Logger;

import flash.events.AsyncErrorEvent;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.net.NetConnection;

import com.game.Logger;

/**
 *     Note: This class was dynamic in ActionScript 2.0 but is now sealed. 
 *  To write callback methods for this class, you can either extend the 
 *  class and define the callback methods in your subclass, or you can 
 *  use the client  property to refer to an object and define the callback 
 *  methods on that object.
 
*/
dynamic 
public class FMSConnection extends NetConnection implements IEventDispatcher
{

    
//--------------------------------------------------------------------------
    
//
    
//  Constructor
    
//
    
//--------------------------------------------------------------------------
    
    
    
public static  const SUSSESS:String="success";
    
public static const FAILURE:String="Failure";
    
    
/**
     *  Constructor
     
*/
    
public function FMSConnection() 
    {
        
super();

    }
    
    
public var clientID:Number;
    
    
//--------------------------------------------------------------------------
    
//
    
//  Methods
    
//
    
//--------------------------------------------------------------------------

    
/**
     *  Connect
     
*/
    override 
public function connect( url:String, args ):void
    {
        
// Set object encoding to be compatible with Flash Media Server
        this.objectEncoding = flash.net.ObjectEncoding.AMF0;
        NetConnection.defaultObjectEncoding
        
        
// Add status/security listeners
        this.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler );
        
this.addEventListener( SecurityErrorEvent.SECURITY_ERROR, netSecurityError );
        
this.addEventListener( AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler );
        
this.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler );        
        
        
// TODO does not pass args into the super function
        super.connect( url );
    }


    
/**
     *  setID
     
*/
    
public function setId( id:Number ):*
    {
        Logger.debug( 
"FMSConnection::setId: id=" + id );
        
if( isNaN( id ) ) return;
        clientID 
= id;
        
return "Okay";
    }

    
/**
     *     Status Handler for the NetConnection class
     
*/
    
private function netStatusHandler( event:NetStatusEvent ):void
    {
        
switch( event.info.code ) {
            
case "NetConnection.Connect.Success":
                Logger.debug( 
"FMSConnection:netStatusHandler:Success: connected: " + this.connected );
                dispatchEvent( 
new Event(FMSConnection.SUSSESS) );
                
break;
            
case "NetConnection.Connect.Failed":
                Logger.debug( 
"FMSConnection:netStatusHandler:Failed: connected: " + this.connected + " - " + event.info.code );
                dispatchEvent( 
new Event(FMSConnection.FAILURE) );
                
break;            
            
default:
                Logger.debug( 
"FMSConnection:netStatusHandler:code: " + event.info.code );
                    
break;
        }
    }

    
private function netSecurityError( event:SecurityErrorEvent ):void {
        Logger.error( 
"FMSConnection:netSecurityError: " + event );
    }        

    
private function asyncErrorHandler( event:AsyncErrorEvent ):void {
Logger.error( 
"FMSConnection:asyncErrorHandler: " + event.type + " - " + event.error );
    }    

    
private function ioErrorHandler( event:IOErrorEvent ):void {
Logger.error( 
"FMSConnection:asyncErrorHandler: " + event.type + " - " + event.text );
    }    

}
}
復(fù)制代碼

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品人妻一区二区三区免费看| 中文字幕亚洲在线一区| 欧美日韩一区二区综合| 在线观看欧美视频一区| 国产国产精品精品在线| 国产又黄又爽又粗视频在线| 亚洲天堂精品在线视频| 91麻豆精品欧美视频| 免费在线成人激情视频| 国产精品香蕉免费手机视频| 国产99久久精品果冻传媒| 91欧美日韩国产在线观看| 日韩夫妻午夜性生活视频| 亚洲中文字幕在线观看四区| 色哟哟国产精品免费视频| 日本乱论一区二区三区 | 久久碰国产一区二区三区| 久久99爱爱视频视频| 欧美高潮喷吹一区二区| 欧美做爰猛烈叫床大尺度| 一区二区日韩欧美精品| 五月情婷婷综合激情综合狠狠| 免费亚洲黄色在线观看| 亚洲欧美日韩在线中文字幕| 熟女高潮一区二区三区| 日本大学生精油按摩在线观看| 成人你懂的在线免费视频| 尹人大香蕉一级片免费看| 又大又紧又硬又湿又爽又猛| 欧美中文日韩一区久久| 少妇熟女亚洲色图av天堂| 国产精品一区二区日韩新区| 亚洲综合天堂一二三区| 五月婷日韩中文字幕四虎| 欧美一级黄片欧美精品| 好吊妞视频这里有精品| 伊人网免费在线观看高清版| 久久99热成人网不卡| 免费啪视频免费欧美亚洲| 麻豆亚州无矿码专区视频| 丁香六月婷婷基地伊人|