AS3 连接 Red5 示例
来源:互联网 发布:java订餐系统源码 编辑:程序博客网 时间:2024/05/16 23:01
示例:
客户端(Flex)于服务端(Red5)建立连接
客户端
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.events.NetStatusEvent;
private var nc:NetConnection;
//.
//建立连接按钮点击后响应方法
private function onConnectClicked(evt:Event):void {
// new netconnection
nc = new NetConnection( );
// set encoding to old amf
nc.objectEncoding = ObjectEncoding.AMF0;
// netstatus event listening
nc.addEventListener( NetStatusEvent.NET_STATUS , netStatus );
// connect to red5
// 调用方法:nc.connect(rtmp://域名或IP/服务名, 参数1, 参数2, ...);
// 可以没有参数:nc.connect(rtmp://域名或IP/服务名);
nc.connect( "rtmp://xxx.xxx.xxx.xxx/xxx", 参数1, 参数2);
}
//处理连接事件
private function netStatus ( event:NetStatusEvent ):void {
//trace( event.info.code );
if ( event.info.code == "NetConnection.Connect.Rejected" ) {
//服务被拒绝, 服务端主动调用 rejectClient() 方法
} else if (event.info.code == "NetConnection.Connect.Success") {
//建立连接成功
} else if (event.info.code == "NetConnection.Connect.Failed") {
//建立连接失败
} else if (event.info.code == "NetConnection.Connect.Closed") {
//连接关闭
}
}
服务器端
import org.redserver.api.IConnection;
//连接建立时Red5服务端自动调用的方法
public boolean appConnect( IConnection conn , Object[] params ) {
//客户端传过来的参数的获得方法
String s1 = (String)params[0]; //参数1
String s2 = (String)params[1]; //参数2
//...
// 其他代码
return true;
}
客户端(Flex)调用服务端(Red5)的函数并获得返回
客户端
import flash.net.Responder;
//.
//定义接收返回结果的Responder
var response:Responder = new Responder(callResult);
//调用方法:nc.call("方法名", response, 参数1, 参数2, ...),参数的数量要与服务端的一致
nc.call("Login", responder, 参数1, 参数2);
//.
private function callResult(resultObj:Object):void {
//trace("服务端返回结果为:" + resultObj);
}
如果不需要获得返回,代码如下
//调用方法:nc.call("方法名", response, 参数1, 参数2, ...),参数的数量要与服务端的一致
nc.call("Login", null, 参数1, 参数2);
服务器端
public void Login(String xxx, String xxx) {
//代码
return xxx; //返回的结果,存放在客户端的resultObj中
}
服务端(Red5)调用客户端(Flex)的函数并获得返回
客户端
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.events.NetStatusEvent;
private var nc:NetConnection;
//.
private function onConnectClicked(evt:Event):void {
// new netconnection
nc = new NetConnection( );
// set encoding to old amf
nc.objectEncoding = ObjectEncoding.AMF0;
// netstatus event listening
nc.addEventListener( NetStatusEvent.NET_STATUS , netStatus );
// connect to red5
// 调用方法:nc.connect(rtmp://域名或IP/服务名, 参数1, 参数2, ...);
// 可以没有参数:nc.connect(rtmp://域名或IP/服务名);
nc.connect( "rtmp://xxx.xxx.xxx.xxx/xxx", 参数1, 参数2);
// *** 下面这行代码很重要,就是这行代码将客户端注册为可以接收服务端的调用 ***
nc.client = this;
}
//接下来,可以加上服务端要调用的方法,必须是 public
public function receiveMsg(msg:String):void {
//代码
}
服务器端
import org.redserver.api.IConnection;
import org.redserver.api.service.IServiceCapableConnection;
//呼叫客户端函数,conn为对应客户端的连接,msg为参数
//如果是多个参数应为:new Object[]{参数1, 参数2, ...},数量要和客户端的函数的参数一致
callClient(conn, "receiveMsg", new Object[]{msg});
//...
//client为对应客户端的连接,method_name为函数名,obj为传递的参数
private boolean callClient(
IConnection client, String method_name, Object[] obj) {
if (client instanceof IServiceCapableConnection) {
IServiceCapableConnection sc = (IServiceCapableConnection) client;
sc.invoke(method_name, obj);
} else {
return false;
}
return true;
}
如果想要获得返回,必须提供一个继承IPendingServiceCallback接口的类
Import org.redserver.api.service.IPendingService;
Import org.redserver.api.IPendingServiceCallback;
Class MyCallback implements IPendingServiceCallback{
Public void resultReceived(IPendingServiceCall call){
//...
}
}
//...
sc.invoke("receiveMsg", new Object[]{msg}, new MyCallback());
- AS3 连接 Red5 示例
- Red5的安装配置以及AS3连接red5简单示例
- Windows环境下配置+运行red5源码+AS3连接red5简单示例
- Windows环境下配置+运行red5源码+AS3连接red5简单示例(转)
- Red5 9的安装配置以及AS3连接red5简单示例 .
- AS3播放RED5视频
- As3下的通信(Red5)
- Flex 连接 red5
- as3与red5通信---学习一
- as3与red5通信---学习二
- as3与red5通信---学习三
- AS3与Red5之间的参数传递
- AS3与Red5之间的参数传递
- as3 重力传感 示例
- as3 冒泡事件示例。
- 断开red5连接时报错
- Flex客户端与Red5通信示例
- Flex客户端与Red5通信示例
- 查看修改ORACLE10G归档日志空间的限定
- 2009年最优秀的30个优秀暗色系风格网站设计欣赏
- AS3之NetStatusEvent参考
- Vs2005 C++编译器的一个bug?
- 从模仿到创新:Web 设计中的中国风
- AS3 连接 Red5 示例
- 查询分组数据指行条件满足的行的上一条记录的技巧
- 编译IA64 X64程序的区别
- Oracle数据库的归档日志写满磁盘空间解决办法
- D3D 材质和灯光
- 李嘉诚十四句成功经典
- 常用正则表达式大全
- 3D游戏引擎FAQ 3. 什么是剔除(culling)系统和LOD系统?
- Big endian Little endian