现在的位置: 首页 > 综合 > 正文

red5的常用方法

2018年03月30日 ⁄ 综合 ⁄ 共 1579字 ⁄ 字号 评论关闭

在使用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;

抱歉!评论已关闭.