1

我正在使用 red5 和使用 AS3 的自定义 flex 客户端进行一些测试,类似于他们在带有 AS2 的 Flash 上使用的简单广播器。但是我在服务器上加了一个功能

public List<String> listaCanales(){
        List<String> canales = new ArrayList<String>();
        canales.add("Canal 1");
        canales.add("Canal 2");
        canales.add("Canal 3");
        canales.add("Canal 4");
        canales.add("Canal x");
        return canales;
    }

这个函数只是一个测试,想法是检索我在 red5 上创建的所有通道,最终将通道作为范围。

我之前创建了一个名为 add 的小函数,它可以工作

public int add(int a, int b){
        return a+b;
    }

这是我如何调用 add 函数

connection  = new NetConnection();
connection.connect("rtmp://"+servidor+"/"+red5App);
connection.addEventListener(NetStatusEvent.NET_STATUS, onConnected);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
var nr:Responder = new Responder(netResponderHandler);
connection.call("add", nr,5,6);

它适用于 add 函数,但是当我尝试 listaCanales 函数时,它就像 netResponder 处理程序不起作用。

connection  = new NetConnection();
connection.connect("rtmp://"+servidor+"/"+red5App);
connection.addEventListener(NetStatusEvent.NET_STATUS, onConnected);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
var nr:Responder = new Responder(netResponderHandler);
connection.call("listaCanales", nr,null);

或者

connection.call("listaCanales", nr);

这是我的 netResponderHandler

protected function netResponderHandler(serverResult:Object):void
{   
    registros("Something happened");
    //registros("The result is " + serverResult);
}
4

1 回答 1

0

当您说我创建了一个小函数 xzy 时,我假设您的测试函数是一个充当“web.handler”的类。所以这个函数在一个扩展 Red5 的 ApplicationAdapter 的 Class 中。

如果 Red5 服务器无法处理调用(因为它无法将请求映射到 ApplicationAdapter 中的特定方法),那么您将在 red5 或错误日志文件中看到一些日志条目。

你检查过那些日志吗?

当您将 conf/logback.xml 中的调试级别从 INFO 提高到更高级别时,您能看到请求吗?

另外我想知道您的 AS 脚本,实际上您应该等待方法调用,直到您收到连接成功方法。不只是在一行中调用所有方法。您必须编写此事件驱动的代码。因此,在“onconnect”处理程序中,您检查 => 连接成功。然后你继续你的程序来调用/测试你的方法。

塞巴斯蒂安

于 2012-10-30T10:03:25.157 回答