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

📄 worker.js

📁 是一个简易的聊天系统
💻 JS
字号:
var bakPar;
var interval;
function OpenLogin()
{
	Opt.Show('<input name="UserName" type="text" id="UserName" /><br/><br/><input name="PassWD" type="password" id="PassWD" /><br/><br/><input type="image" src="images/btn_in.gif" name="button" id="button" value="提交" onclick="worker.Login();" style=" margin:0 0 0 35px" />',448,135);
}

function Worker()
{
	
	window.onbeforeunload=this.LoginOut;
	OpenLogin();
}

Worker.prototype.Name="";
Worker.prototype.Pass="";

/*
登录,异步POST
*/
Worker.prototype.Login=function()
{
	this.Name=encodeURI(document.getElementById("UserName").value);
	var passwd=encodeURI(document.getElementById("PassWD").value);
	this.Pass = passwd;
	var data='U='+this.Name+'&P='+passwd;
	Opt.Close();
	Msg.Show(workerCN.waiting);
	Msg.Func='OpenLogin()';
	executPost(data,'login.aspx',true,'worker.EndLogin');
}
/*
登录结果,界面操作
*/
Worker.prototype.EndLogin=function()
{
	if(xmlHttp.readyState!=4)return;
	var re=xmlHttp.status;
	switch(re)
	{
		case 600:
			interval=setInterval(worker.GetData,1800);//从服务器读工作者交流信息
			//TypeMenu.Init();
			TypeMenu.LoadWorkers();
			Msg.Func=null;
			Msg.Close();
		break;
		case 601:
		Msg.timeClose(workerCN.login[0],1);
		break;
		case 602:
		Msg.timeClose(workerCN.login[1],1);
		break;
		case 603:
		Msg.timeClose(workerCN.login[2],1);
		break;
		default:
		Msg.timeClose(xmlHttp.responseText,3);
		break;
	}
}


/*切线*/
Worker.prototype.ReplaceWork=function(toObj)
{
    if(Chat.selectingID=='WorkChannl')return;
    
    if(toObj.className=='unline')return;
    var to=toObj.id.replace("worker_","");
    if(to==this.Name)return;
    
	bakPar=[Chat.List[Chat.selectingID],to];//临时用
	var data='Opt=ReplaceWork&to='+to+'&GuestID='+Chat.selectingID;
	Msg.Show(workerCN.waiting);
	executPost(data,'workerChat.aspx',true,'worker.EndReplaceWork');
}
Worker.prototype.EndReplaceWork=function()
{
	if(xmlHttp.readyState!=4)return;
	var re=xmlHttp.status;
	switch(re)
	{
		case 800://成功
		    Msg.timeClose(workerCN.Successful+workerCN.changeWorkforGuest.replace("GuestName",bakPar[0]).replace("To",bakPar[1]),2);
		break;
		case 801:
		Msg.timeClose(workerCN.fail+workerCN.changeWorkforGuest.replace("GuestName",bakPar[0]).replace("To",bakPar[1]),2);
		break;
		default:
		Msg.timeClose(xmlHttp.responseText,3);
		break;
	}
}


/*回复客户*/
Worker.prototype.Reply=function()
{
	var message="";
	var guestID="";
	var data='Opt=Reply&Message='+message+'&GuestID='+guestID;
	Msg.Show(workerCN.waiting);
	executPost(data,'workerChat.aspx',true,'worker.EndReply');
}
Worker.prototype.EndReply=function()
{
	if(xmlHttp.readyState!=4)return;
	var re=xmlHttp.status;
	switch(re)
	{
		case 800://成功
			Msg.Close();
		break;
		case 801:
		Msg.timeClose('帐户不对',3);
		break;
		default:
		Msg.timeClose(xmlHttp.responseText,3);
		break;
	}
}


/*回复工作者*/
Worker.prototype.ChatWorker=function(message,GuestID)
{
    var data= GuestID!='WorkChannl' ? 'Opt=Reply' : 'Opt=ChatWorker';
	data+='&Message='+encodeURI(message);
	data+='&GuestID='+GuestID;
	//Msg.Show(workerCN.waiting);
	executPost(data,'workerChat.aspx',true,'worker.EndChatWorker');
}
Worker.prototype.EndChatWorker=function()
{
	if(xmlHttp.readyState!=4)return;
	var re=xmlHttp.status;
	switch(re)
	{
		case 800://成功
			//Msg.Close();
		break;
		case 801:
		//Msg.timeClose('帐户不对',3);
		break;
		default:
		//Msg.timeClose(xmlHttp.responseText,3);
		break;
	}
}







/*
得到所有工作者
成功将得到一个数组,单元为键值对
*/
Worker.prototype.GetAllWorker=function()
{
	var xmlHttp=executPost("Opt=GetAllWorker",'workerChat.aspx');
	var workers=eval(xmlHttp.responseText);
	if(workers.length==undefined)return;
	return workers;
}



var last;
Worker.prototype.GetData=function()
{
	//var xmlHttp=executPost("Opt=GetData&U=" + this.Name + "&P=" + this.Pass ,'workerChat.aspx');
	try
	    {
		var xmlHttp=executPost("Opt=GetData&U=" + this.Name + "&P=" + this.Pass ,'workerChat.aspx');

		if(last!=xmlHttp.responseText)$('test').appendChild(createElement('div',null,null,xmlHttp.responseText));
		last=xmlHttp.responseText;
		var workers=eval(xmlHttp.responseText);
		TypeMenu.Update(workers[0]);
		Chat.Update(workers[1]);
		Chat.ReceivedByWorker(workers[2]);
		Chat.ReceivedByGuest(workers[3]);
		document.getElementById("spanStatus").innerHTML="<font color='green'>连接保持</font>";
	}
	catch(e)
	    {
			//alert(e + " --网络暂时性阻塞,系统将自动重连");
		document.getElementById("spanStatus").innerHTML="<font color='red'>"+e+ " :网络暂时性阻塞,系统自动重连中..</font>";
	    }
}


/*
得到所有在线工作者
成功将得到一个键值对
*/
Worker.prototype.GetOnline=function()
{
	var xmlHttp=executPost("Opt=GetAllWorker",'workerChat.aspx');
	var workers=eval(xmlHttp.responseText);
	if(workers.length==undefined)return;
	return workers;
}

/*得到正在服务器的所有客户*/
Worker.prototype.GetGuest=function()
{
	var xmlHttp=executPost("Opt=GetGuest",'workerChat.aspx');
	var workers=eval(xmlHttp.responseText);
	if(workers==undefined)return;
	Chat.Update(workers);
}

/*得到别的工作者发过来的信息*/
Worker.prototype.GetWorkerMsg=function()
{
	var xmlHttp=executPost("Opt=GetWorkerMsg",'workerChat.aspx');
	var workers=eval(xmlHttp.responseText);
	if(workers.length==undefined)return;
	for(var i=0;i<workers.length;i++)
	{
		showWorkerMsg(workers[i][0],workers[i][1]);
	}
}

/*得到所有客户的问题*/
Worker.prototype.GetAsk=function()
{
	var xmlHttp=executPost("Opt=GetAsk",'workerChat.aspx');
	var workers=eval(xmlHttp.responseText);
	if(workers.length==undefined)return;
}







/*
退出
*/
Worker.prototype.LoginOut=function()
{
    var count=0;
    for(var v in Chat.List)
		{
			count++;
		}
    if(count>1)
    {
        if(confirm("请不要离开,还有客户需要服务"))
        {
            clearInterval(interval);
            executPost("Opt=LoginOut",'workerChat.aspx',true,'worker.EndLoginOut');    
        }
    }
    else
    {
         clearInterval(interval);
         executPost("Opt=LoginOut",'workerChat.aspx',true,'worker.EndLoginOut');   
    }
    
}


Worker.prototype.EndLoginOut=function()
{
    
	if(xmlHttp.readyState!=4)return;
	 clearInterval(interval);
	 if(xmlHttp.responseText=="OK")//window.close();
	 {
	    alert("您已断开连接");
	    window.location.reload();
	 }
}




var worker;

var getWorkMsg;
function loadWorker()
{
	worker=new Worker();
	TypeMenu.Init();
	Chat.Init();

}
window.onload=loadWorker;





















⌨️ 快捷键说明

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