red5+flex应用开发

red5应用程序分为服务端和客户端两部分,使用eclipse作为开发环境,客户端Flex使用Flash Builder4.6开发。注意,red5只支持jdk1.6。下面开发一个简单的red5应用程序,实现客户端与服务端的通信。

1.服务端

直接将eclipse的工作空间设置为D:\Program Files\Red5\webapps,新建一个名为"helloRed5"的java project。

在Properties->Java Build Path->Libraries->Add External JARS...中, 添加依赖库red5..jar,该文件在red5的安装目录下。

设置编译输出目录为helloRed5/WEB-INF/classes。

将doc/template/myapp/WEB-INF目录复制到project目录下。

完成以上步骤后,project目录结构如下

red5+flex应用开发_第1张图片


添加一个名为HelloRed5的java类,这个类很简单,继承自ApplicationAdapter。

HelloRed5.java

package sample;

import org.red5.server.adapter.ApplicationAdapter;

public class HelloRed5 extends ApplicationAdapter {
	
	public String sayHello() {
		return "Hello, red5!";
	}	
}

下面修改几个配置文件

red5-web.properties

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

web.xml

...
	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>/helloRed5</param-value>
	</context-param>
...
red5-web.xml,

	<bean id="web.handler" 
	    class="sample.HelloRed5" 
		singleton="true" />
现在服务端的工作就全部完成了


2.客户端

使用Flash Builer4.6建立一个Flex project,名为"helloRed5client",使用NetConnection与服务端进行通信。客户端的功能很简单,界面上放置一个button和一个lable控件,点击button后显示从服务端获取到的字符串"Hello, Red5!"。

helloRed5Client.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="init();" >
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import flash.net.NetConnection;
			import mx.controls.Alert;
			
			private var nc:NetConnection;
			
			private function init():void{
				nc = new NetConnection();
				nc.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);
				nc.client = this;
				nc.connect("rtmp://localhost/helloRed5");
			}
			
			private function sayHello():void{
				nc.call("sayHello",new Responder(okHandle,failureHandle));
			}
			
			public function okHandle(result:String):void{
				message.text = result;
			}
			
			public function failureHandle(result:String):void{
				Alert.show(result, "Error");
			}
						
			private function connectHandler(evt:NetStatusEvent):void{				
				if(evt.info.code != "NetConnection.Connect.Success"){
					Alert.show("code:"+evt.info.code, "Error");
					nc.removeEventListener(NetStatusEvent.NET_STATUS,connectHandler);
				}
			}
			
			public function onBWDone():void{}	//注意 ,这个函数不能少
			
			protected function button1_clickHandler(event:MouseEvent):void
			{
				// TODO Auto-generated method stub
				sayHello();
			}			
		]]>
		</fx:Script>
	<s:Button x="55" y="43" label="Say Hello" click="button1_clickHandler(event)"/>
	<s:Label id="message" x="159" y="44"/>
</s:Application>

注意,代码中的:

nc.client = this;
public function onBWDone():void{}
不能少,否则会提示以下错误

Error #2044: 未处理的 AsyncErrorEvent:。 text=Error #2095: flash.net.NetConnection 无法调用回调 onBWDone。 error=ReferenceError: Error #1069: 在 helloRed5Client 上找不到属性 onBWDone,且没有默认值


3.运行

启动red5,浏览器打开编译出来的helloRed5Client.html文件,点击"Say Hello"按钮,结果如下
















































   

你可能感兴趣的:(eclipse,function,Flex,application,library,button)