使用AJAX和J2EE实现一个网上会议室系统 (2)
五、核心代码说明
1、服务器端核心代码
在EasyJF开源团队的会议系统中,由于是以EasyJF官网的论坛系统、后台管理等是集成一起的。服务器ChatService与ChatRoom共同合并到了一个ChatService.java类中,实现会议室管理及会议服务功能。ChatService类的部分主要代码如下:
package com.easyjf.chat.business;
public class ChatService implements Runnable {
private static final Map service=new HashMap();
//会议室服务,系统中的当前会议室存放到该表集合中
private static final int maxServices=10;//可以同时开的最大会议室数
private static final SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
private final List msgs;//聊天信息Chat
private final List users;//在线用户,ChatUser
private final List talkers;//排队发言人数Talker
private final List manager;//会议室管理员
private Talker currentTalker;//当前发言人
private String cid;//会议室id
private String title;//会议室主题
private String intro;//会议室简介
private String owner;//会议室创建人
private int maxUser;//最大在线人数
private int interval;//最大刷新时间间隔
private String vrtype;//访问权限
private String vrvalue;//访问值
private String announce;
private String password;//房间进入密码
private int status;//会议室状态
private String filePath;
//private Thread thread;
private boolean isStop=false;
public ChatService()
{
this.msgs=new ArrayList();
this.users=new ArrayList();
this.talkers=new ArrayList();
this.manager=new ArrayList();
this.maxUser=1000;//最大1000人同时
this.interval=1000*60*5;//5分钟以前的信息
}
/**
* 停止所有会议室
*
*/
public static void clear()
{
if(!service.isEmpty())
{
Iterator it=service.values().iterator();
while(it.hasNext())
{
ChatService chat=(ChatService)it.next();
chat.stop();
}
}
service.clear();
}
/**
* 创建一个会议室
* @param name 会议室ID
* @return
*/
public static ChatService create(String name)
{
ChatService ret=null;
if(service.containsKey(name)) 字串3
{
ChatService s=(ChatService)service.get(name);
s.stop();
service.remove(name);
}
if(service.size(){
ret=new ChatService();
service.put(name,ret);
}
return ret;
}
/**
* 停止某个会议室
* @param name 会议室ID
* @return
*/
public static boolean close(String name)
{
ChatService chatRoom=ChatService.get(name);
if(chatRoom!=null)
{
chatRoom.stop();
service.remove(name);
}
return true;
}
/**
* 获得一个会议室信息
* @param name 会议室ID
* @return
*/ 字串2
public static ChatService get(String name)
{
if(service.containsKey(name))return (ChatService)service.get(name);
else return null;
}
public void run() {
// TODO Auto-generated method stub
//this.thread=Thread.currentThread();
while(!isStop)
{
//System.out.println("开始监控一个会议室!"+this.title);
this.flash();
try{
Thread.sleep(5000);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//System.out.println("结束!");
}
public void stop()
{
this.flashAll();
isStop=true;
}
//会议室中有人发言 字串9
public boolean talk(Chat chat)
{
boolean ret=false;
if(canTalk(chat.getSender()))
{
this.msgs.add(chat);
ret=true;
}
return ret;
}
public boolean exit(ChatUser user)
{
talk(geneSystemMsg(user.getUserName()+"退出了会议室!"));
return this.users.remove(user);
}
}
//刷新信息,保存会议信息
public void flash()
{
flashChatMsg();
flashChatUser();
}
}
1、服务器端核心代码
在EasyJF开源团队的会议系统中,由于是以EasyJF官网的论坛系统、后台管理等是集成一起的。服务器ChatService与ChatRoom共同合并到了一个ChatService.java类中,实现会议室管理及会议服务功能。ChatService类的部分主要代码如下:
package com.easyjf.chat.business;
public class ChatService implements Runnable {
private static final Map service=new HashMap();
//会议室服务,系统中的当前会议室存放到该表集合中
private static final int maxServices=10;//可以同时开的最大会议室数
private static final SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
private final List msgs;//聊天信息Chat
private final List users;//在线用户,ChatUser
private final List talkers;//排队发言人数Talker
字串9
private final List manager;//会议室管理员
private Talker currentTalker;//当前发言人
private String cid;//会议室id
private String title;//会议室主题
private String intro;//会议室简介
private String owner;//会议室创建人
private int maxUser;//最大在线人数
private int interval;//最大刷新时间间隔
private String vrtype;//访问权限
private String vrvalue;//访问值
private String announce;
private String password;//房间进入密码
private int status;//会议室状态
private String filePath;
//private Thread thread;
private boolean isStop=false;
public ChatService()
{
this.msgs=new ArrayList();
this.users=new ArrayList();
this.talkers=new ArrayList();
字串2
this.manager=new ArrayList();
this.maxUser=1000;//最大1000人同时
this.interval=1000*60*5;//5分钟以前的信息
}
/**
* 停止所有会议室
*
*/
public static void clear()
{
if(!service.isEmpty())
{
Iterator it=service.values().iterator();
while(it.hasNext())
{
ChatService chat=(ChatService)it.next();
chat.stop();
}
}
service.clear();
}
/**
* 创建一个会议室
* @param name 会议室ID
* @return
*/
public static ChatService create(String name)
{
ChatService ret=null;
if(service.containsKey(name)) 字串3
{
ChatService s=(ChatService)service.get(name);
s.stop();
service.remove(name);
}
if(service.size(){
ret=new ChatService();
service.put(name,ret);
}
return ret;
}
/**
* 停止某个会议室
* @param name 会议室ID
* @return
*/
public static boolean close(String name)
{
ChatService chatRoom=ChatService.get(name);
if(chatRoom!=null)
{
chatRoom.stop();
service.remove(name);
}
return true;
}
/**
* 获得一个会议室信息
* @param name 会议室ID
* @return
*/ 字串2
public static ChatService get(String name)
{
if(service.containsKey(name))return (ChatService)service.get(name);
else return null;
}
public void run() {
// TODO Auto-generated method stub
//this.thread=Thread.currentThread();
while(!isStop)
{
//System.out.println("开始监控一个会议室!"+this.title);
this.flash();
try{
Thread.sleep(5000);
}
catch(Exception e)
{
e.printStackTrace();
}
}
//System.out.println("结束!");
}
public void stop()
{
this.flashAll();
isStop=true;
}
//会议室中有人发言 字串9
public boolean talk(Chat chat)
{
boolean ret=false;
if(canTalk(chat.getSender()))
{
this.msgs.add(chat);
ret=true;
}
return ret;
}
public boolean exit(ChatUser user)
{
talk(geneSystemMsg(user.getUserName()+"退出了会议室!"));
return this.users.remove(user);
}
}
//刷新信息,保存会议信息
public void flash()
{
flashChatMsg();
flashChatUser();
}
}
Tags:
责任编辑:您的评论
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
精彩推荐
最新资讯


您的位置: