参考http://hi.baidu.com/xinming_blog/blog/item/bb5ffd8f6d94bcf9513d92bd.html
流程:
1.下载最新版本的RED5
http://osflash.org/red5
2.安装JRE
3.安装RED5,注意此时会要求指定JRE的目录。
4.到RED5的安装目录,找到doc/templates目录,该目录中存放了一个标准的RED5应用程序模版myapp,将其复制到RED5安装目录中的webapps目录下,并改名为你喜欢的文件夹名,比如你要开发一个聊天的程序,那么可以把myapp改为myChat,这个名字就是以后你要连接的服务名了。
5.在WEB-INF中新建一个文件夹src用来存放程序的源代码,新建一个classes文件夹用来存放编译后的文件。
6.打开Eclipse(若没有请事先安装),将工作区指定为RED5安装目录下webapps,然后新建一个项目,项目名为myChat.这个时候你应该发现刚才myChat中的文件都被加载进来了,我们首先把src目录指定为源代码目录,右键选择src,在弹出的菜单中选择Build Path->Use as Source Folder,即将其指定为代码文件夹。接下来要指定项目的目标目录,在项目名上右键选择Properties,选择Java Bulid Path,在选择Source标签,在下面的Browse中选择Classes目录,将其指定为目标目录。然后选择Libraries,点击Add External JARs,将RED5安装目录下的red5.jar包含进来。
7.这个时候,在Eclipse的左边应该多了WEB-INF/src这样一个东东,我们将要在这里开始写入我们的第一个项目代码。右键选择它,在弹出的菜单中选择New->Package,新建一个包,举例,包名可以为org.d5.first,然后再在生成的org.d5.first这个包上继续右键选择New->File,输入文件名Application.java。并在建好的文件中输入以下代码:
1package org.d5.first;
2import org.red5.server.adapter.ApplicationAdapter;
3public class Application extends ApplicationAdapter {
4 public String Login(String str){
5 System.out.println("user connected. param= " + str );
6 return "Welcome to Chat Servers";
7 }
8}
9
8.进行配置。
注意:在WEB-INF下一共有四个文件,分别是web.xml,red5-web.xml,red5-web.properties和log4j.properties。我们需要对他们进行修改,关于这四个文件的详细功能,见《关于RED5——应用程序配置文件详解》
a、把web.xml文件作以下更改:找到webAppRootKey,将其下面的param-value标签中的值修改为/myChat。
b、把red5-web.xml文件做以下更改:找到bean id=”web.handler”一句,将class=”XXX”中的XXX位置修改为org.d5.first.Application,这样本程序将以刚才写的Application来运行。
c、后面的<bean id="myhandler.service" 可删除整句,也可改写为<bean id="MyService.service" class="org.d5.first.MyService" /> 然后在Eclipse项目里面创建一个org.d5.first.MyService类写个Fun()方法,再AS里面用nc.call("MyService.Fun",null)来调用Fun方法。
d、把red5-web.properties文件做以下更改:将第一句修改为webapp.contextPath=/myChat
e、把red5-web.properties文件第二句修改为webapp.virtualHosts=*, localhost, 127.0.0.1 不然无法用局域网的IP连接
9.编译项目
10.重新启动RED5服务器
11.打开FLASH(若没有请安装,最好安装flash9),新建一个文件,在第一桢输入以下代码来实现AS3.0与Red5参数传递 。
1NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
2var nc:NetConnection = new NetConnection();
3nc.addEventListener(NetStatusEvent.NET_STATUS,StatusHander);
4nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,ErroHander);
5nc.connect("rtmp://192.168.10.10/myServer");
6trace("connect..");
7
8
9var obj:Object = new Object();
10function StatusHander(event:NetStatusEvent):void
11{
12 var info:Object = event.info;
13
14 trace("StatusHander");
15 switch(info.code)
16 {
17 case "NetConnection.Connect.Success":
18 trace("Sucess");
19 nc.client = this;
20 //nc.call("handler.method", null, "Hello world!");
21 nc.call("Login",new Responder(Result),"msg=NC.call");
22 break;
23 case "NetConnection.Connect.Failed":
24 trace("Failed");
25 break;
26 default:
27 trace(info.code);
28 break;
29 }
30}
31var a:int=0;
32function Result(obj:Object):void
33 {
34 trace(obj);
35 trace("i got it..");
36 }
37function ErroHander(event:AsyncErrorEvent):void
38{
39 trace("Erro:");
40}
41
42
输出的结果如下:
connect..
StatusHander
Sucess
Welcome to Chat Servers
i got it.....