red5的常用方法

来源:互联网 发布:tk域名注册接口 编辑:程序博客网 时间:2024/05/16 06:50

在使用red5+flash做rpg游戏开发的时候有些功能是需要服务器来提供的,如最简单的多人用户上线,当一个用户上线后后要通知所有其他的用户,这个时候就需要red5去获取所用链接的客户端,然后通知客户端用户上线。当用户下线的时候,也是同样的需要red5的支持。 我在开发的时候是使用red5 0.8的版本。 下面详细介绍一下具体的实现。 ApplicationAdapter是客户端与red5连接的基础 ...
在使用red5+flash做rpg游戏开发的时候有些功能是需要服务器来提供的,如最简单的多人用户上线,当一个用户上线后后要通知所有其他的用户,这个时候就需要red5去获取所用链接的客户端,然后通知客户端用户上线。当用户下线的时候,也是同样的需要red5的支持。
我在开发的时候是使用red5 0.8的版本。
下面详细介绍一下具体的实现。
ApplicationAdapter是客户端与red5连接的基础类:
下面来介绍一下调用的顺序,和建立so的方法。
第一步:
RED5服务器启动后,开始加载,此时只能获取应用的SCOPE
public boolean appStart(IScope arg0) {
       this.createSharedObject(arg0, "point", true);
ISharedObject so = this.getSharedObject(arg0, "point");//建立一个so
if (so != null)
so.addSharedObjectListener(new ShareObjectListener());
       return true;
}
改方法中的ShareObjectListener监听器是一个需要实现ISharedObjectListener接口的类。这样就建立一个so了。
第二步:

响应连接处理,可获取当前connection的信息,并且可以接收客户端提供的参数

public boolean appConnect(IConnection conn, Object[] params){
       return true;
}

第三步:连接成功,此时可获取client信息和SCOPE信息
public boolean appJoin(IClient client, IScope app){
       return true;
}
@Override
public boolean roomStart(IScope arg0) {
System.out.println(" 启动roomStart");
return true;
}
如果需要获取每一个room中的客户端连接。
@Override
public boolean roomConnect(IConnection arg2, Object[] arg1) {
         IScope arg0 = arg2.getScope();
         Set<IClient> i = arg0.getClients();
for (IClient c : i) {
callClient(c.getConnections().iterator().next());
}
return true;
}
public void callClient(IConnection conn) {
        if (conn instanceof IServiceCapableConnection) {
IServiceCapableConnection sc = (IServiceCapableConnection) conn;
sc.invoke("resultFun",new Object[]{peopleArray},this);
         }
}
最后一步:

客户端浏览器关闭即退出应用。

public void appDisconnect(IConnection conn) {
        return;

原创粉丝点击