`
- 浏览:
2573504 次
- 来自:
深圳
-
上一遍是客户端,此处是服务端代码
- packagewm;
-
importjava.util.ArrayList;
-
importjava.util.HashMap;
-
importjava.util.List;
-
importorg.apache.commons.logging.Log;
-
importorg.apache.commons.logging.LogFactory;
-
importorg.red5.server.adapter.ApplicationAdapter;
-
importorg.red5.server.api.IClient;
-
importorg.red5.server.api.IConnection;
-
importorg.red5.server.api.IScope;
-
importorg.red5.server.api.Red5;
-
importorg.red5.server.api.service.IServiceCapableConnection;
-
importorg.red5.server.api.so.ISharedObject;
-
importwm.vo.UserVO;
-
-
publicclassScopeTestextendsApplicationAdapter{
- protectedstaticLoglog=LogFactory.getLog(ScopeTest.class.getName());
- privateHashMap<String,List<UserVO>>users=newHashMap<String,List<UserVO>>();
- privateList<IConnection>clientConnList=newArrayList<IConnection>();
- privateISharedObjectshareObj;
- publicbooleanappStart(IScopearg0){
- System.out.println("启动appStart");
- for(inti=0;i<10;i++){
- users.put("room"+i,newArrayList<UserVO>());
- System.out.println("创建房间:room"+i);
- }
- returnsuper.appStart(arg0);
- }
- publicStringroomsInfo(){
- StringBufferrooms=newStringBuffer();
- rooms.append("<root>");
- for(inti=0;i<users.size();i++){
- rooms.append("<room>")
- .append("<id>").append("room"+i).append("</id>")
- .append("<num>").append(users.get("room"+i).size()).append("</num>")
- .append("</room>");
- }
- rooms.append("</root>");
- clientConnList.add(Red5.getConnectionLocal());
- returnrooms.toString();
- }
- publicbooleanconnect(IConnectionconn,IScopescope,Object[]params){
- System.out.println("与服务端建立连接...................作用域名称为:"+scope.getName());
- returnsuper.connect(conn,scope,params);
- }
- publicvoiddisconnect(IConnectionconn,IScopescope){
- System.out.println("与客户端断开连接....................");
- clientConnList.remove(conn);
- }
- publicbooleanroomStart(IScopescope){
- System.out.println("初始化房间:"+scope.getName());
- this.createSharedObject(scope,scope.getName(),true);
- shareObj=this.getSharedObject(scope,scope.getName(),true);
- shareObj.addSharedObjectListener(newChatSharedObjectListener());
- returnsuper.roomStart(scope);
- }
- publicbooleanroomConnect(IConnectioncon,Object[]arg1){
- IScopescope=con.getScope();
- StringuserName=(String)arg1[0];
- StringroomId=scope.getName();
- System.out.println("用户名:"+userName);
- List<UserVO>users=this.users.get(roomId);
- if(users.size()>=3){
- System.out.println("房间人数已满.......................");
- returnfalse;
- }
- UserVOuser=newUserVO();
- user.setUserName(userName);
- user.setConn(con);
- user.setRoomId(roomId);
- updateCurrentRoomClients(user);
- users.add(user);
- con.getClient().setAttribute("userName",userName);
- updateRoomsNum(roomId,"add");
- returnsuper.roomConnect(con,arg1);
- }
- publicvoidupdateCurrentRoomClients(UserVOuser){
- List<UserVO>userList=this.users.get(user.getRoomId());
- StringBufferuserXml=newStringBuffer();
- userXml.append("<root>")
- .append("<user>")
- .append("<name>"+user.getUserName()+"</name>")
- .append("<id>"+user.getId()+"</id>")
- .append("</user>")
- .append("</root>");
- for(inti=0;i<userList.size();i++){
- IConnectionconn=userList.get(i).getConn();
- IServiceCapableConnectionsc=(IServiceCapableConnection)conn;
- sc.invoke("addNewUser_byCall",newObject[]{userXml.toString()});
- }
- }
- publicvoidupdateRoomsNum(StringroomId,Stringflag){
- List<IConnection>conns=this.clientConnList;
- for(inti=0;i<conns.size();i++){
- IConnectionconn=conns.get(i);
- IServiceCapableConnectionsc=(IServiceCapableConnection)conn;
- sc.invoke("updateRoomsNum_byCall",newObject[]{roomId,flag});
- }
- }
- publicStringusers(StringroomId){
- List<UserVO>users=this.users.get(roomId);
- StringBufferuserXml=newStringBuffer();
- userXml.append("<root>");
- for(inti=0;i<users.size();i++){
- userXml.append("<user>")
- .append("<name>"+users.get(i).getUserName()+"</name>")
- .append("<id>"+users.get(i).getId()+"</id>")
- .append("</user>");
- }
- userXml.append("</root>");
- returnuserXml.toString();
- }
- publicvoidroomLeave(IClientclient,IScopes){
- StringuserName=client.getAttribute("userName").toString();
- StringroomId=s.getName();
- System.out.println("用户离开......................."+userName+"size:1+"+users.get(roomId).size());
- UserVOu=newUserVO();
- u.setUserName(userName);
- users.get(roomId).remove(u);
- System.out.println("size2:"+users.get(roomId).size());
- List<UserVO>userList=this.users.get(roomId);
- for(inti=0;i<userList.size();i++){
- IConnectionconn=userList.get(i).getConn();
- IServiceCapableConnectionsc=(IServiceCapableConnection)conn;
- sc.invoke("removeUser_byCall",newObject[]{userName});
- }
- updateRoomsNum(roomId,"del");
- super.roomLeave(client,s);
- }
- publicvoidroomStop(IScopes){
- super.roomStop(s);
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
setup-Red5-1.0.0.exe 官方安装包 java开源流媒体软件 windows版本
r下载后,解压,把解压后的文件直接放入到red5webaaps下
编译github上的red5-server发现咩有这个包, 自己编译了一下, 供大家参考.
此资源用于在linux下搭建red5,可用于直播,流媒体,等等
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit): (mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar)
这是一款流媒体框架搭建的一个red5包,很好用哦!
【red5-server-1.0.5-RELEASE-source.tar.gz】Linux版本的Red5源码 此版本包含几个修复和修改后的 1.0.4 发现释放。Tomcat 插件日志记录使用新的 jar,其日志事件推向 slf4j;更新的也是 websocket 插件到 1.1 版。 ...
Red Hat Enterprise Linux 9 / Oracle Linux 9 (x86, 64-bit):(mysql-8.0.31-1.el9.x86_64.rpm-bundle.tar):
下面是Red Hat Enterprise Linux 5.0版本下的中文包文件名.在iso文件的/server/文件夹下 fonts-chinese-3.02-9.6.el5.noarch.rpm fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm 双击运行他们 修改 /etc/sysconfig/i18n...
red5, red5-server-1.0.7-RELEASE.tar.gz
基于red5的多人聊天,使用了sharedobject,此例子仅用于对不了解sharedobject的人做一个入门的例子
5.Red-Gate Schema Compare for Oracle 3 6.Red-Gate Schema Doc for Oracle 2 7.Red-Gate MySQL Compare 1 8.Red-Gate MySQL Data Compare 1 9.Red-Gate SmartAssembly 6 10.Red-Gate SQL Backup 7 11.Red-...
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit): (mysql-community-server-8.0.31-1.el7.x86_64.rpm)
setup-red5-0.6.3.exe
流媒体中间件: red5-server-1.2.3.zip 官网下载的 要求安装 jdk11 有需要red5-server-1.0.9-RELEASE 可以私聊我,等了好久才官网下载完成。
5.Red-Gate Schema Compare for Oracle 3 6.Red-Gate Schema Doc for Oracle 2 7.Red-Gate MySQL Compare 1 8.Red-Gate MySQL Data Compare 1 9.Red-Gate SmartAssembly 6 10.Red-Gate SQL Backup 7 11...
【red5-server-1.0.5-RELEASE-server.zip】Windows系统的Red5最新版此版本包含几个修复和修改后的 1.0.4 发布版。Tomcat 插件日志记录使用新的 jar,其日志事件推向 slf4j;更新的也是 websocket 插件到 1.1 版。
red5 服务器安装包,安装是记得ip 127.0.0.1,等会继续上传相关的doc文件等等
Nessus-8.15.2-es7.x86_64.rpm适用于Red Hat ES 7 (64-bit) / CentOS 7 / Oracle Linux 7 (including Unbreakable Enterprise Kernel)
setup-Red5-1.0.1-java6.exe 可用于下载 来播放rtmp