/*
* D5Power Studio
* www.d5power.com
* author:D5.Benmouse Email:www.pai.la@gmail.com
*/
package org.d5power.common;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.service.IServiceCapableConnection;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.Red5;
import java.util.*;
public class Application extends ApplicationAdapter {
public boolean appStart(IScope app) {
appScope = app;
return true;
}
//连接时触发的函数,定义本过程中的username
public boolean appConnect(IConnection conn, Object[] params)
{
username=(String)params[0];
//登入时将连接ID和连接信息形成对应关系并存入在线列表
String link_id=conn.getClient().getId();
onLineClient.put(link_id, conn);
return true;
}
//用户断开连接的时候触发,刷新在线列表,去除在线MAP中的记录
//通知客户端更新在线列表
public void appDisconnect(IConnection conn)
{
String dis_link_id=conn.getClient().getId();
//根据ID删除对应在线记录
onLineClient.remove(dis_link_id);
//取得新的在线列表并广播出去
BroadcastOnlineList(getOnlineList(),0);
}
//
public boolean appJoin(IClient client, IScope app)
{
client.setAttribute("username",username);
return true;
}
public String login()
{
IConnection myconn=Red5.getConnectionLocal();
//获得ID
String myid=myconn.getClient().getId();
//获得在线列表
String onliner=getOnlineList();
//广播在线列表
BroadcastOnlineList(onliner,1);
//返回数据
return myid+":"+onliner;
}
//取得在线列表,对在线的客户端进行遍历,并显示。
public String getOnlineList()
{
Iterator<IConnection> it=appScope.getConnections();
String onLineList="";
while(it.hasNext())
{
IConnection this_conn=it.next();
IClient ic=this_conn.getClient();
String u=ic.getAttribute("username").toString();
onLineList+=ic.getId()+","+u+";";
}
return onLineList;
}
public void sendMSG(String uid,String msg,String fid)
{
//根据fid获得用户名
IConnection searchClient=onLineClient.get(fid);
String from_name=searchClient.getClient().getAttribute("username").toString();
callClient(uid,"getMsg",new Object[]{msg,fid,from_name});
}
/*
* 私有函数区域
* 以下函数均不可在外部直接调用,属于内部处理使用
*/
//广播在线列表
//0-全部广播 1-最后一次连接的不广播
private void BroadcastOnlineList(String onLineList,Integer mode)
{
Iterator<String> bc_id=onLineClient.keySet().iterator();
while(bc_id.hasNext())
{
String key=bc_id.next();
IConnection bc_conn=onLineClient.get(key);
IClient bc_ic=bc_conn.getClient();
String uid=bc_ic.getId();
if(mode==0)
{
callClient(uid,"makeOnlineList",new Object[]{onLineList});
}else{
String uname=bc_ic.getAttribute("username").toString();
//不向当前用户广播在线列表
if(!uname.equals(username)) callClient(uid,"makeOnlineList",new Object[]{onLineList});
}
}
}
//呼叫客户端函数
//uid为客户端的连接ID,method_name为函数名,obj为传递的参数
private boolean callClient(String uid, String method_name,Object[] obj)
{
IConnection toClient=onLineClient.get(uid);
if (toClient instanceof IServiceCapableConnection)
{
//转发消息
IServiceCapableConnection sc = (IServiceCapableConnection) toClient;
sc.invoke(method_name, obj);
return true;
}
return true;
}
/*
* 属性定义区
* 以下内容为本类内属性的定义
*/
private IScope appScope;
private String username="";
//private String login_id;
private Map<String,IConnection> onLineClient=new HashMap<String,IConnection>();
}
没有合适的资源?快使用搜索试试~ 我知道了~
视频聊天代码欢迎下载
共18个文件
as:5个
xml:5个
properties:3个
需积分: 3 6 下载量 39 浏览量
2009-09-24
14:11:42
上传
评论
收藏 186KB RAR 举报
温馨提示
视频聊天代码欢迎下载视频聊天代码欢迎下载视频聊天代码欢迎下载
资源推荐
资源详情
资源评论
收起资源包目录
d5_1v1chat.rar (18个子文件)
d5_chat
WEB-INF
log4j.properties 57B
web.xml 2KB
db.properties 122B
red5-web.xml 972B
src
org
d5power
common
Application.java 4KB
_notes
dwsync.xml 178B
classes
org
d5
lib
_notes
dwsync.xml 174B
d5Mysql.class 2KB
d5power
common
_notes
dwsync.xml 178B
Application.class 5KB
red5-web.properties 52B
flash
onLineList.as 2KB
chatWindow.as 818B
31.swf 47KB
cgtChat.as 763B
31.fla 1.04MB
driver.as 2KB
drag.as 249B
共 18 条
- 1
资源评论
gislei
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功