我正在使用 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 上创建的所有 channel ,最终将 channel 作为范围。
我之前创建了一个名为 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);
}
最佳答案
当你说我创建了一个小函数xzy时,我假设你的测试函数是一个充当“web.handler”的类。所以这个函数位于一个扩展了Red5的ApplicationAdapter的类中。
如果 Red5 服务器无法处理该调用(因为它无法将请求映射到 ApplicationAdapter 中的特定方法),那么您将在 red5 或错误日志文件中看到一些日志条目。
你检查过那些日志吗?
当你将conf/logback.xml中的调试级别从INFO提高到更高级别时,你能看到请求吗?
我也想知道你的 AS 脚本,实际上你应该等待方法调用,直到收到连接成功方法。不只是在一行中调用所有方法。您必须编写此事件驱动的代码。 因此,在“onconnect”处理程序中,您检查 => 连接成功。然后你继续你的程序来调用/测试你的方法。
塞巴斯蒂安
关于java - 使用 flex netConnection.call 方法检索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13125716/