var areaOneVal = helper.cookies.get("areaOneVal"); var areaOneText = helper.cookies.get("areaOneText"); // 如果浏览器不支持websocket,会使用这个flash自动模拟websocket协议,此过程对开发者透明 WEB_SOCKET_SWF_LOCATION = "./js/websocket/WebSocketMain.swf"; // 开启flash的websocket debug WEB_SOCKET_DEBUG = true; var ws, n = 0, timer; var lockReconnect = false; //避免重复连接 var obj = {}; var Statess; var cls = 0; var lasttime = new Date().getTime(); var cons; var person = ''; if(areaOneVal) { var areaOneVal = helper.cookies.get("areaOneVal"); } else { var areaOneVal = "sqs12345" } //创建scoket连接 function createWebSocket() { try { Connect(); } catch(e) { reconnect(); } } //连接 function Connect() { // debugger ws = new WebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port); ws.onopen = function() { console.log(new Date() + " " + "建立连接"); cls = 0; lasttime = new Date().getTime(); join() SayBusy() }; //接收到消息的回调方法 ws.onmessage = function(evt) { //如果获取到消息,心跳检测重置 //拿到任何消息都说明当前连接是正常的 //heartCheck.reset().start(); var myDate = new Date(); console.log(myDate + " receive " + evt.data); var data = JSON.parse(evt.data)[0]; if(data) { var rlt = data.Result; var type = data.Type; if(rlt == true) { switch(type.toLowerCase()) { //case "heart": HeartBack(); break;//心跳 case "login": LoginBack(); break; //签入 case "subscribecancel": SubScribeCancelBack(); break; //停止监测 case "agentstate": AgentStateBack(data); break; //坐席状态 } } else { if(rlt == false) { $(".hwzt").text('操作失败!'); } else { $(".hwzt").text(rlt); if(type.toLowerCase() == 'waitcount') { backstageQueue(data); } } } } }; //连接关闭的回调方法 ws.onclose = function(evt) { if(cls == 0) { cls = 1; $(".hwzt").text('连接关闭!'); $("#top-search li i").removeClass("active"); reconnect(); } }; //连接发生错误的回调方法 ws.onerror = function(evt) { //产生异常 $(".hwzt").text('连接出现异常!'); console.log(ws); if(ws == null || ws.readyState != ws.OPEN) { console.log(new Date() + "开始重连"); reconnect(); } }; } //重连 function reconnect() { if(lockReconnect) return; lockReconnect = true; //没连接上会一直重连,设置延迟避免请求过多 setTimeout(function() { console.log(new Date() + " " + "重连中……"); createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port); lockReconnect = false; SayBusy() }, 2000); } //发送 function Send() { if(ws.readyState != ws.OPEN) { //reconnect(); } if(ws.readyState == ws.OPEN) { console.log(new Date() + " send " + JSON.stringify(obj)); ws.send(JSON.stringify(obj)); } } //心跳检测 var heartCheck = { timeout: 25000, //25秒 timeoutObj: null, serverTimeoutObj: null, reset: function() { clearTimeout(this.timeoutObj); clearTimeout(this.serverTimeoutObj); return this; }, start: function() { var self = this; this.timeoutObj = setTimeout(function() { //这里发送一个心跳,后端收到后,返回一个心跳消息, //onmessage拿到返回的心跳就说明连接正常 obj.Type = "Heart"; Send(); self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了 ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次 }, self.timeout) }, this.timeout) } } // 签入 function SayBusy() { obj.Type = "SayBusy"; Send(); } //签入 function LoginBack() { obj.Type = "SayBusy"; Send(); } // 点击签入 function join() { obj.Type = 'Login', obj.AgentID = '9898', obj.AgentExten = '1015', obj.AgentType = '0', obj.AgentGroup = '364' Send() } //取消监测 function SubScribeCancelBack() { $('.yuan_one').addClass("lx") $('.yuan_two').addClass("lx") } //坐席状态 function AgentStateBack(data) { $(cons).each(function(i, n) { if(n.F_UserCode == data.AgentID) { $('.yuan_one').eq(i).removeClass("lx") $('.yuan_two').eq(i).removeClass("lx") $('.yuan_one').eq(i).removeClass("kx") $('.yuan_two').eq(i).removeClass("kx") $('.yuan_one').eq(i).removeClass("hc") $('.yuan_two').eq(i).removeClass("hc") $('.yuan_one').eq(i).removeClass("hh") $('.yuan_two').eq(i).removeClass("hh") $('.yuan_one').eq(i).removeClass("ml") $('.yuan_two').eq(i).removeClass("ml") $('.yuan_one').eq(i).removeClass("zl") $('.yuan_two').eq(i).removeClass("zl") if(data.State == '0') { $('.yuan_one').eq(i).addClass("lx") $('.yuan_two').eq(i).addClass("lx") } else if(data.State == '2') { $('.yuan_one').eq(i).addClass("kx") $('.yuan_two').eq(i).addClass("kx") } else if(data.State == '3') { $('.yuan_one').eq(i).addClass("hc") $('.yuan_two').eq(i).addClass("hc") } else if(data.State == '4') { $('.yuan_one').eq(i).addClass("hh") $('.yuan_two').eq(i).addClass("hh") } else if(data.State == '5') { $('.yuan_one').eq(i).addClass("ml") $('.yuan_two').eq(i).addClass("ml") } else if(data.State == '6') { $('.yuan_one').eq(i).addClass("zl") $('.yuan_two').eq(i).addClass("zl") } } }) } //后台排队 function backstageQueue(data) { person = data.WaitCount console.log(person) } $(function() { createWebSocket() SayBusy() partOne($('#time1').val() && $('#time1').val().split(' ~ ')[0], $('#time1').val() && $('#time1').val().split(' ~ ')[1], areaOneVal); laydate.render({ elem: '#time1', range: '~', theme: '#114a97', done: function(value, date) { var areaOneVal = $(".areaOne").val(); partOne(value && value.split(' ~ ')[0], value && value.split(' ~ ')[1], areaOneVal); } }); laydate.render({ elem: '#time2', theme: '#114a97', done: function(value, date) { var areaOneVal = $(".areaOne").val(); partTwo(value, areaOneVal) } }); laydate.render({ elem: '#time3', theme: '#114a97', done: function(value, date) { var areaOneVal = $(".areaOne").val(); partThree(value, areaOneVal) } }); Ajax(); $(".areaOne").change(function() { var areaOneVal = $(this).val(); var areaOneText = $(".areaOne").find("option:selected").text(); helper.cookies.set("areaOneVal", areaOneVal, 7); helper.cookies.set("areaOneText", areaOneText, 7); partOne($('#time1').val() && $('#time1').val().split(' ~ ')[0], $('#time1').val() && $('#time1').val().split(' ~ ')[1], areaOneVal); partTwo($('#time2').val(), areaOneVal); partThree($('#time3').val(), areaOneVal); // Ajax() }); }) // 跳轉 $(".index").click(function() { window.open('detail.html', '_self') }) $(".second").click(function() { window.open('second.html', '_self') }) $(".third").click(function() { window.open('third.html', '_self') }) $(".fourth").click(function() { window.open('fourth.html', '_self') }) $(".nav_middle").click(function() { window.open('index.html', '_self') }) $("#department").click(function() { window.open('receiptDepartment.html', '_self') }) $("#sourceChannel").click(function() { window.open('sourceChannel.html', '_self') }) // $("#call").click(function(){ // window.open('TelephoneDetails.html','_self') // }) $("#complaint").click(function() { window.open('complaintsReport.html', '_self') }) //区县筛选 //deprtment(); function deprtment() { $.getJSON(huayi.config.callcenter_url + "CountyBranch/GetBranchListS", function(result) { if(result.state.toLowerCase() == "success") { goodslist = result.data; // 第五屏 $(".areaOne").empty(); $(goodslist).each(function(i, n) { $('').appendTo($(".areaOne")); }); if(areaOneVal) { $(".areaOne").val(areaOneVal); } } }); } function partOne(starts, ends, areaOneVal) { $.ajax({ type: "get", url: huayi.config.callcenter_url + "SeatMonitoring/getlist", async: true, dataType: 'json', data: { // start: starts, // end: ends, // branchcode:areaOneVal }, success: function(data) { if(data.state.toLowerCase() == 'success') { // layer.close(index); cons = data.data; $(".users").html('') $(cons).each(function(i, n) { var str = '