编辑: 麒麟兔爷 | 2019-07-04 |
8 理服务器调用客户端方法有返回值就就必须实现 IPendingServiceCallback 接口,并调用方式 改为sc.invoke( clientMethod , new Object[]{ One , 1},this);
this 是任意一个实现IPendingServiceCallback 接口的类,在接口的 resultReceived 方法中处理返回值.现在把上面 的类改成下面样子 package first;
im port org.red5.server.adapter.Applic ationAdapter;
im port org.red5.server.api.IConnection;
im port org.red5.server.api.service.IPendingServiceCall;
im port org.red5.server.api.service.IPendingServiceCallback;
im port org.red5.server.api.service.IServiceCapableConnection;
public class Application extends ApplicationAdapter im plements IPendingServiceCallback{ @Override public boolean appConnect(IConnection arg0, Object[] arg1) { callClient(arg0);
return true;
} private void callClient(IConnection conn){ if (conn instanceof IServiceCapableConnection) { IServiceCapableConnection sc = (IServiceCapableConnection) conn;
sc.invoke( clientMethod , new Object[]{ One , 1},this);
} } public void resultReceived(IPendingServiceCall arg0) { System .out.println( 来自客户端到返回: +arg0.getResult());
} } 把客户端的 private function clientMethod(str:String,num :Number):void{ Alert.show( 接收 +str+(num+1));
} 改成 private function clientMethod(str:String,num :Number):String{ Alert.show( 接收 +str+(num+1));
Return 客户端返回来的字符串 ;
} 测试可以从 red5 的框里看到输出 客户端返回来的字符串 3.遍历所有连接到服务器端的用户 遍历所有链接到服务器的客户端是常常的事,如好友上线,则要及时把这个消息通知给 在线的人员. Red5 通过IConnection.getscope()得到所在 scope, 通过scope 可以得到连接到这个 scope 的所有客户的连接.在得到连接后就可以通过连接调用客户端方法.如调用每个客户端的 clientMethod 方法一遍可以把服务器改成下面的样子 package chapter2;
im port java.util.Iterator;
作者:周英科 email:[email protected]:543246541
9 im port org.red5.server.adapter.Applic ationAdapter;
im port org.red5.server.api.IConnection;
im port org.red5.server.api.IScope;
im port org.red5.server.api.service.IPendingServiceCall;
im port org.red5.server.api.service.IPendingServiceCallback;
im port org.red5.server.api.service.IServiceCapableConnection;
public class Application extends ApplicationAdapter im plements IPendingServiceCallback{ @Override public boolean appConnect(IConnection arg0, Object[] arg1) { this.callEvery(arg0.getScope());
return true;
........