⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asc

📁 一流的视频语音效果 运行环境: 操作系统:Windows 2000/XP/2003 ,Linux WEB服务器:IIS等任何服务器 支持语言: ASP、ASP.NET、PHP、JSP等主流语
💻 ASC
字号:
var aIps=[];
application.onAppStart = function()
{
//共有三个共享对象:
//初始化房间列表对象
application.roomslist = SharedObject.get("roomslist", false);
//初始化大厅会员列表对象
application.r0users = SharedObject.get("r0users", false);

//初始化禁用会员列表对象
application.ipso = SharedObject.get("ipso",false);
var banneduser = new Object();
   banneduser.ip = "1.1.1.1";
   today_date = new Date();
   banneduser.date = today_date.getTime()/1000;
   banneduser.duration = 742;
application.ipso.setProperty(banneduser.ip,banneduser);


//初始化管理员、会员、房间ID服务器变量
application.roomId=0;
application.adminId=1;
application.usersId=1;
application.history="Application started\r\n";


//初始化大厅
var roomObj = new Object();
roomObj.name = "大厅";
roomObj.description = "欢迎来到聊天室!";
roomObj.password="";
roomObj.users = 0;
roomObj.id = "r"+application.roomId++;

//将大厅加入房间列表对象
application.roomslist.setProperty(roomObj.id, roomObj);
//now_date = new Date();
//r1_log='('+ now_date+')Log initialized. Application started.';

//初始化日志
//now_date = new Date();
//application.log = "<font color='#990000'>("+now_date+")Application Started, Lobby room created</font>";

}
//响应客户端连接,参数个数及顺序必须和客户端一致
//application.onConnect = function(newClient,name,cam,mic,genre,usertype,hidden)
application.onConnect = function(newClient, gender, username, dropInRoom, hidden, siteId)
{ 
	var banned=false;
	
	//检测IP是否被封锁
	var names = application.ipso.getPropertyNames();
	for (x in names){
		var obj = application.ipso.getProperty(names[x]);
		if (obj!=null){
			//for (j in obj){
					//trace(j+':'+obj[j])
			//}
			today_date = new Date();
			now_time = today_date.getTime()/1000;
			if (obj['ip']==newClient.ip && obj['date']+obj['duration']>now_time){
				rmtime=Math.round((obj['date']+obj['duration']-now_time)/60)
				var err = new Object();err.message = "抱歉,您被封锁了 "+obj['duration']/3600+" 小时. 您还要等 "+rmtime+" 分钟才能进入聊天室.";
				application.rejectConnection(newClient, err)
				banned=true;
			 }
		 }
	}
	
if (banned)
{
	return;
}
application.acceptConnection(newClient);   //接受客户端连接
if (gender=="admin"){      //如果是管理员,则管理员ID加1
   newClient.id=application.usersId++;
   application.adminId++;
}else {        //如果是普通会员,则会员ID加1,并登记IP地址
   newClient.id=application.usersId++;
   aIps[newClient.id]=newClient.ip;
}

//var roomHistory[];
//roomHistory[0]="4565";
newClient.call("recieveid", null,newClient.id);//,roomHistory);
newClient.room= dropInRoom;
newClient.username=username;
newClient.hidden = hidden;

//创建一个会员对象
var PeopleObj = new Object();
   PeopleObj.ip = newClient.ip;  
   PeopleObj.username = username;
   PeopleObj.siteid = siteId;
   PeopleObj.cam = 0;
   PeopleObj.mic = 0;
   PeopleObj.gender = gender;
   PeopleObj.hidden = hidden;
   PeopleObj.id = newClient.id;
  
   eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
//从方面列表对象中获取房间对象
var roomObj= application.roomslist.getProperty(newClient.room);
roomObj.users++;
//在房间列表对象中,增加会员数1
application.roomslist.setProperty(newClient.room, roomObj);
if (newClient.hidden==false){
eval('application.'+newClient.room+'users.send("roomNotification","joinchat","'+newClient.username+'")');
}


///////////////////////////客服端事件处理开始////////////////////////////////////
//消息发送函数
//newClient.userMsg = function(room,message,color,bold,italic,type,fromid,nick,destination,dstnm) {
newClient.distributeTextMessage = function(userid, username, textmessage, color, destinationid, destinationname)
{
   eval('application.'+newClient.room+'users.send("receiveMessage",userid,username,textmessage,color,destinationid,destinationname)');
}
newClient.buzzSelectedPerson = function(destinationid, destinationname)
{
   eval('application.'+newClient.room+'users.send("buzzed",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
}
newClient.showCamera = function()
{
   PeopleObj.cam = 1;
    eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.hideCamera = function()
{
   PeopleObj.cam = 0;
    eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.showMicrophone = function()
{
   PeopleObj.mic = 1;
    eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.hideMicrophone = function()
{
   PeopleObj.mic = 0;
    eval('application.'+newClient.room+'users.setProperty(newClient.id,PeopleObj)');
}
newClient.iAmNotLookingAt = function(destinationid, destinationname)
{
   //isNotWatchingMe senderid, senderusn, receiverid, receiverusn
   if (newClient.hidden==false){
   eval('application.'+newClient.room+'users.send("isNotWatchingMe",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
   }
}
newClient.iAmLookingAt = function(destinationid, destinationname)
{
   //isWatchingMe senderid, senderusn, receiverid, receiverusn
   if (newClient.hidden==false){
   eval('application.'+newClient.room+'users.send("isWatchingMe",'+newClient.id+',"'+newClient.username+'",destinationid,destinationname)');
   }
}
newClient.goToRoom = function(roomid)
{
   if (newClient.hidden==false){
     var roomObj= application.roomslist.getProperty(roomid);
     roomObj.users++;
     application.roomslist.setProperty(roomid, roomObj); 
     eval('application.'+roomid+'users.setProperty(PeopleObj.id,PeopleObj)'); 
     eval('application.'+roomid+'users.send("roomNotification","joinroom","'+newClient.username+'","'+roomObj.name+'")');
    
     roomObj= application.roomslist.getProperty(newClient.room);
     roomObj.users--;
     application.roomslist.setProperty(newClient.room, roomObj);
     eval('application.'+newClient.room+'users.setProperty(PeopleObj.id, null)');    
     eval('application.'+newClient.room+'users.send("roomNotification","quitroom","'+newClient.username+'","'+roomObj.name+'")');
   }
   newClient.room=roomid;
}
newClient.createRoom = function(name,description,password) {
    var roomObj = new Object();
    roomObj.name = name;
    roomObj.description = description;
    roomObj.password=password;
    roomObj.users = 0;
    roomObj.id = "r"+application.roomId++;
    application.roomslist.setProperty(roomObj.id, roomObj);
    eval('application.'+roomObj.id+'users = SharedObject.get("'+roomObj.id+'users", false)');
}
newClient.deleteRoom = function(roomid)
{
	//先将该房间的会员移到大厅

	//获取大厅房间对象
	//var roomObj = application.roomslist.getProperty("r0");

	//eval("var names = application."+roomid+"users.getPropertyNames()");
	//for (x in names)
	//{
		//eval("var obj = application."+roomid+"users.getProperty(names[x])");
		//if (obj!=null){
		//trace("移动会员至大厅,会员ID:"+obj["id"])
					
		//将当前房间的用户移入大厅
		//application.r0users.setProperty(obj["id"],obj);
		//eval('application.'+roomid+'users.send("roomNotification","joinroom",newClient.name)')
		//将大厅的会员数加1
		//roomObj.users++;
		//application.roomslist.setProperty("r0",roomObj);

		//以上代码有问题:被移动到大厅的会员不会更新好友列表,以下代码将会员踢出聊天室
		//但有错误,看起来又是对的,郁闷

		//for (i=0; i <application.clients.length ; i++){
		//if(application.clients[i].id==obj["id"]{
			//application.disconnect(application.clients[i])
		//}//end if
	//}//end for

	application.roomslist.setProperty(roomid, null);
	eval('application.'+roomid+'users.clear()');
}
newClient.kickThisUser = function(destinationid,roomid)
{

	for (i=0; i <application.clients.length ; i++){
		//trace(application.clients[i])
		if(application.clients[i].id==destinationid && application.clients[i].gender!="admin")
		{
			destinationname=application.clients[i].username;
			application.disconnect(application.clients[i]);
			eval('application.'+roomid+'users.send("roomNotification","quitchat",destinationname);')
		}
	}
}
newClient.banThisUser =function(destinationid,roomid,duration) {
	for (i=0; i < application.clients.length; i++){
		if(application.clients[i].id==destinationid && application.clients[i].gender!="admin")
		{
			ip = application.clients[i].ip;
			var banneduser = new Object();
			banneduser['ip'] = ip;
			today_date = new Date();
			banneduser['date'] = today_date.getTime()/1000;//1970年1月1日午夜以来的秒数
			banneduser['duration'] = duration;//单位为秒
			application.ipso.setProperty(banneduser['ip'],banneduser);		
			
			destinationname=application.clients[i].username;
			application.disconnect(application.clients[i]);
			eval('application.'+roomid+'users.send("roomNotification","quitchat",destinationname);')
		}
	}
}
///////////////////////////客服端事件处理结束////////////////////////////////////

}

application.onDisconnect = function(client)
{
//写入日志
//now_date = new Date();
//eval(client.room+'_log+="<br>('+now_date+')'+client.name+' left the room."');

//trace('Disconnection in progress...')
//删除会员对象(更新会员列表)
//trace(client.name+":"+client.hidden)
if(client.hidden==false){
   //eval("application."+client.room+"users.send('joinMsg','disconected',client.username)")
   //更新房间数据 (更新房间列表)
   var roomObj= application.roomslist.getProperty(client.room);
   roomObj.users--;
   application.roomslist.setProperty(client.room, roomObj);
   eval('application.'+client.room+'users.send("roomNotification","quitchat","'+client.username+'")');
} 
eval("application."+client.room+"users.setProperty(client.id, null)");
aIps[client.id]='null';
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -