亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatservice.java

?? 聊天系統源碼 聊天系統源碼 聊天系統源碼
?? JAVA
字號:
package com.easyjf.chat.business;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;

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))
{
	ChatService s=(ChatService)service.get(name);
	s.stop();
	service.remove(name);
}
if(service.size()<maxServices)
{
	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
 */
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;
}
//會議室中有人發言
public boolean talk(Chat chat)
{
	boolean ret=false;
	if(canTalk(chat.getSender()))
		{		
		this.msgs.add(chat);
	     ret=true;
		}
	return ret;
}
//新用戶加入會議室
public boolean join(ChatUser user)
{
	boolean ret=false;
	if(canJoin(user))
	{
		boolean isJoin=false;
		for(int i=0;i<users.size();i++)
		{
			ChatUser u=(ChatUser)users.get(i);
			if(u.getUserName().equals(user.getUserName()))
			{
				isJoin=true;
				u.setLastAccessTime(new Date());
			}
		}
		if(!isJoin)this.users.add(user);	
		talk(geneSystemMsg(user.getUserName()+"進入會議室!"));
		ret=true;
		
	}
	return ret;
}

public boolean exit(ChatUser user)
{	    
  talk(geneSystemMsg(user.getUserName()+"退出了會議室!"));
  return this.users.remove(user);
}
public Chat geneSystemMsg(String info)
{
	Chat msg=new Chat();
	   msg.setCid(geneId());
	   msg.setSender("系統");
	   msg.setContent(info);
	   msg.setVdate(new Date());	
	   msg.setReciver("大家");
	   return msg;
}
//檢測用戶是否具有加入會議室的權限
public boolean canJoin(ChatUser user)
{
	boolean ret=false;
	String vrType=this.getVrtype();	
	if(vrType==null || (vrType.trim().equals("")))//所有人都能進入
	{
		ret=true;
	}
	else//判斷訪問權限
	{	
     //	會員
	if(vrType.equals("user"))
	{
		//ret=user!=null;	
	}			
	else if(vrType.equals("score"))//積分限制
	{
		//ret= user.getScore().intValue()>new Integer(this.getVrvalue()).intValue();		
	}	
	else if(vrType.equals("member"))
	{
		//ret=user.getTypes()!=null && (!user.getTypes().equals("")) && user.checkUserRole("member");	
	}
	else if(vrType.equals("admin"))
	{
		//ret=user.getTypes()!=null && (!user.getTypes().equals("")) && user.checkUserRole("admin");	
	}
	}
	return ret;
}
//檢測用戶是否具有發言權限
public boolean canTalk(String userName)
{
	if(this.getStatus()>0)
	{		
		return (this.getCurrentTalker().getUserName().equals(userName));
	}
	else return true;
}
//讀取N條最新的發言信息
public List getNewestMsg(ChatUser user,String lastReadId)//根據上次讀出的Id號讀出聊天信息
{
	List ret=new ArrayList();
	user.setLastAccessTime(new Date());
	long now=System.currentTimeMillis();
	for(int i=msgs.size()-1;i>=0;i--)
	{
	Chat info=(Chat)msgs.get(i);
	if((now-info.getVdate().getTime()>this.interval)||(info.getCid().equals(lastReadId)))break;	
	ret.add(0,info);
	}	
	return ret;
}
public String geneId()
{
	Random r = new Random(10);   
	String id = System.currentTimeMillis()+""+r.nextInt();
	return id;
}
public String geneGuest()
{
	int i=this.users.size()+1;
	String userName="guest"+i;
	if(this.users.contains(userName))userName="guest_"+i;	
	return userName;
}
//刷新信息,保存會議信息
public void flash()
{
	flashChatMsg();
	flashChatUser();
}
public void flashChatMsg()
{
	long now=System.currentTimeMillis();
	List delList=new ArrayList();
	for(int i=0;i<msgs.size();i++)
	{
		Chat info=(Chat)msgs.get(i);
		if((now-info.getVdate().getTime())>this.interval)delList.add(0,info);
	}
   StringBuffer s=new StringBuffer(1024);
   for(int i=0;i<delList.size();i++)
   {
	   Chat info=(Chat)msgs.get(i);
	   s.append("<font color=blue>"+info.getSender()+"</font>對<font color=blue>"+info.getReciver()+"</font>說:"+info.getContent()+"("+info.getVdate()+")\r\n");
   }
   if(s.length()>1)  saveToFile(s.toString());
   msgs.removeAll(delList);
}
public void flashChatUser()
{
	long now=System.currentTimeMillis();
	List delList=new ArrayList();
	for(int i=0;i<users.size();i++)
	{
		ChatUser info=(ChatUser)users.get(i);
		if((now-info.getLastAccessTime().getTime())>this.interval)delList.add(0,info);		
	}  
   for(int i=0;i<delList.size();i++)
   {
	   ChatUser info=(ChatUser)delList.get(i);	   
	   this.talk(geneSystemMsg(info.getUserName()+"非正常退出會議!"));
   } 
   users.removeAll(delList);
}
private void saveToFile(String s)
{
	try{
	File file=new File(filePath+"/"+this.title+"_"+df.format(new Date())+".txt");
	if(!file.getParentFile().exists())file.getParentFile().mkdirs();
	OutputStream o=new FileOutputStream(file,true);	
	OutputStreamWriter out=new OutputStreamWriter(o,"utf-8");	
	out.write(s);
	out.close();
	}
	catch(Exception e)
	{
		e.printStackTrace();
	}
}
//刷新信息,保存會議信息
public void flashAll()
{
	StringBuffer s=new StringBuffer(1024);
	for(int i=0;i<msgs.size();i++)
	{
	  Chat info=(Chat)msgs.get(i);
	  s.append(info.getSender()+"對"+info.getReciver()+"說:"+info.getContent()+"("+info.getVdate()+")\r\n");
	}
	msgs.clear();
	saveToFile(s.toString());
}


public int getInterval() {
	return interval;
}
public void setInterval(int interval) {
	this.interval = interval;
}

public int getMaxUser() {
	return maxUser;
}
public void setMaxUser(int maxUser) {
	this.maxUser = maxUser;
}
public String getVrtype() {
	return vrtype;
}
public void setVrtype(String vrtype) {
	this.vrtype = vrtype;
}
public String getVrvalue() {
	return vrvalue;
}
public void setVrvalue(String vrvalue) {
	this.vrvalue = vrvalue;
}
public int getStatus() {
	return status;
}
public void setStatus(int status) {
	this.status = status;
}

public List getTalkers() {
	return talkers;
}

public List getUsers() {
	return users;
}

public Talker getCurrentTalker() {
	return currentTalker;
}
public void setCurrentTalker(Talker currentTalker) {
	this.currentTalker = currentTalker;
}

public String getIntro() {
	return intro;
}
public void setIntro(String intro) {
	this.intro = intro;
}
public String getOwner() {
	return owner;
}
public void setOwner(String owner) {
	this.owner = owner;
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public List getManager() {
	return manager;
}

public String getFilePath() {
	return filePath;
}

public void setFilePath(String filePath) {
	this.filePath = filePath;
}

public String getCid() {
	return cid;
}

public void setCid(String cid) {
	this.cid = cid;
}

public String getAnnounce() {
	return announce;
}

public void setAnnounce(String announce) {
	this.announce = announce;
}

public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}

/**
	 * @param args
	 */
public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品久久久午夜一区二区三区| 91色婷婷久久久久合中文| 国产黑丝在线一区二区三区| 91丝袜美女网| 久久久国产一区二区三区四区小说 | 亚洲大片免费看| 国产精品系列在线播放| 欧美精品高清视频| 国产精品免费视频观看| 麻豆久久久久久| 欧美私人免费视频| 国产精品久久久久久亚洲伦| 麻豆成人av在线| 欧美三级乱人伦电影| 国产精品每日更新| 国产福利91精品一区二区三区| 欧美日韩精品是欧美日韩精品| 亚洲欧美综合另类在线卡通| 亚洲二区在线视频| 91一区二区三区在线观看| 久久久久国色av免费看影院| 极品少妇一区二区| 欧美一区二区福利视频| 亚洲一区二区三区中文字幕| 色综合中文字幕国产| 国产精品久久福利| 福利电影一区二区| 国产校园另类小说区| 九色综合国产一区二区三区| 欧美一区二区视频在线观看2022| 亚洲福利电影网| 欧美日本在线视频| 无码av免费一区二区三区试看| 91福利区一区二区三区| 亚洲视频中文字幕| 99国产精品一区| 中文字幕制服丝袜成人av| 国产98色在线|日韩| 中文字幕第一区二区| 懂色av噜噜一区二区三区av| 国产午夜精品久久久久久久 | 欧美一区二区日韩| 琪琪久久久久日韩精品| 欧美成人a∨高清免费观看| 九九视频精品免费| 中文字幕不卡在线观看| 色综合久久66| 视频一区在线视频| 精品国产百合女同互慰| 国产一区二区视频在线播放| 国产精品天美传媒沈樵| 色悠久久久久综合欧美99| 亚洲国产一区二区在线播放| 日韩一区二区精品葵司在线 | 亚洲va欧美va国产va天堂影院| 欧美日韩你懂得| 极品少妇一区二区三区精品视频| 欧美国产丝袜视频| 欧美专区在线观看一区| 麻豆精品久久久| 国产丝袜欧美中文另类| 色伊人久久综合中文字幕| 天堂成人国产精品一区| 国产欧美视频一区二区| 一本到不卡免费一区二区| 美女网站色91| 国产欧美一区二区在线观看| 日本二三区不卡| 国产一区在线不卡| 亚洲一区在线电影| 久久一区二区视频| 色综合欧美在线| 久草这里只有精品视频| 亚洲最新在线观看| 久久久亚洲精品石原莉奈| 91国产成人在线| 国产一区二区精品久久99| 亚洲制服丝袜av| 国产午夜精品一区二区| 欧美日韩国产电影| 成人av免费观看| 久久福利视频一区二区| 亚洲另类春色国产| 国产网站一区二区| 欧美一级片免费看| 色先锋aa成人| 成人免费视频视频| 精品一区免费av| 丝袜亚洲另类丝袜在线| 亚洲欧美日韩小说| 中文字幕精品三区| 欧美精品一区二区三区蜜桃| 欧美精品色综合| 色综合天天视频在线观看| 粉嫩高潮美女一区二区三区| 麻豆国产精品一区二区三区| 亚洲第一主播视频| 亚洲欧美日韩系列| 国产精品女上位| 国产精品人成在线观看免费| 欧美成人精品1314www| 欧美日本在线播放| 在线观看视频一区| 色婷婷精品久久二区二区蜜臂av| 成人激情开心网| 国产伦理精品不卡| 国产一区啦啦啦在线观看| 麻豆一区二区在线| 蜜桃免费网站一区二区三区| 日本成人在线看| 午夜电影一区二区| 亚洲成av人片一区二区三区| 亚洲一级二级在线| 亚洲一区二区欧美日韩 | 欧美性色欧美a在线播放| 成人午夜激情视频| 成人高清在线视频| 成人毛片视频在线观看| 成人精品在线视频观看| 成人av综合在线| 91丨九色丨国产丨porny| 色综合久久久久综合99| 欧美午夜寂寞影院| 欧美久久久一区| 精品国产乱码久久久久久夜甘婷婷| 欧美精品一级二级| 精品捆绑美女sm三区| 久久久久久免费网| 国产精品视频免费看| 一色屋精品亚洲香蕉网站| 亚洲乱码一区二区三区在线观看| 亚洲精品菠萝久久久久久久| 五月综合激情网| 国产一区二区三区不卡在线观看| 成人免费黄色在线| 91色porny蝌蚪| 欧美丰满美乳xxx高潮www| 日韩欧美三级在线| 欧美激情一区二区在线| 亚洲另类在线制服丝袜| 视频一区在线视频| 国产精品一卡二| 日本精品裸体写真集在线观看| 欧美日韩国产首页在线观看| 日韩免费高清av| 国产精品嫩草99a| 午夜不卡av在线| 成人午夜视频在线观看| 欧美日韩精品欧美日韩精品| 久久综合视频网| 艳妇臀荡乳欲伦亚洲一区| 国内一区二区在线| 色噜噜夜夜夜综合网| 日韩免费福利电影在线观看| 综合欧美亚洲日本| 免费成人结看片| 色婷婷亚洲婷婷| 国产午夜一区二区三区| 天堂午夜影视日韩欧美一区二区| 国产乱子伦一区二区三区国色天香| 成人午夜看片网址| 日韩欧美一区在线观看| 亚洲欧洲av在线| 国产麻豆午夜三级精品| 欧美人动与zoxxxx乱| 欧美国产精品一区二区三区| 石原莉奈在线亚洲二区| 国产·精品毛片| 日韩一级在线观看| 亚洲激情图片qvod| 国产精品亚洲专一区二区三区| 欧美日精品一区视频| 中文字幕字幕中文在线中不卡视频| 蜜臀精品一区二区三区在线观看 | 国产欧美一区二区三区鸳鸯浴| 亚洲午夜精品17c| jlzzjlzz亚洲日本少妇| 欧美mv和日韩mv的网站| 日韩主播视频在线| 色av成人天堂桃色av| 国产精品网站在线播放| 国产麻豆精品在线| 精品福利在线导航| 视频在线观看91| 欧美美女bb生活片| 中文字幕中文字幕一区二区| 国产一区二区三区在线看麻豆| 欧美日韩成人在线| 亚洲午夜激情av| 欧美视频一区二区在线观看| 日韩美女久久久| 色综合久久久久综合99| 最近中文字幕一区二区三区| 丁香六月综合激情| 久久精品这里都是精品| 韩国av一区二区三区在线观看| 日韩一区二区免费视频| 蜜臀国产一区二区三区在线播放| 337p亚洲精品色噜噜| 青青国产91久久久久久 |