Просмотр исходного кода

安图话务添加心跳异常重连处修改

miaofuhao лет назад: 6
Родитель
Сommit
6fd0b4c2e5
2 измененных файлов с 176 добавлено и 5 удалено
  1. 1 0
      CallCenterWeb.UI/js/index.js
  2. 175 5
      CallCenterWeb.UI/js/main.js

+ 1 - 0
CallCenterWeb.UI/js/index.js

@@ -630,6 +630,7 @@ function workcount() {
630 630
 		"token": $.cookie("token")
631 631
 	}, function(result) {
632 632
 		if(result.state.toLowerCase() == "success") {
633
+			$.cookie("token", $.cookie("token"), {expires: 7});
633 634
 			$(".dpd").text(result.data.dpd);
634 635
 			$(".djd").text(result.data.djd);
635 636
 			//   $(".dcl").text(result.data.dcl);

+ 175 - 5
CallCenterWeb.UI/js/main.js

@@ -2,9 +2,16 @@
2 2
 	timer,hidTel,hidCallID,hidActionID;
3 3
 var lockReconnect = false; //避免重复连接
4 4
 var obj = {};
5
-
5
+var directType;
6
+var sendType;
7
+var mesCont;
8
+var eorrorConnect;
6 9
 var cls = 0;
7 10
 var lasttime = new Date().getTime();
11
+var errorState;
12
+var reconnecTion;
13
+var recon;
14
+var loginOr;
8 15
 //创建scoket连接
9 16
 function createWebSocket() {
10 17
 	try {
@@ -12,6 +19,11 @@ function createWebSocket() {
12 19
 		
13 20
 		Connect();
14 21
 	} catch(e) {
22
+		//打印日志
23
+		directType="lianjie";
24
+		sendType="异常错误"; //JSON.stringify(data)
25
+		mesCont=e.message;
26
+		debuggerLog();
15 27
 		reconnect();
16 28
 	}
17 29
 }
@@ -27,6 +39,25 @@ function Connect() {
27 39
 
28 40
 			cls = 0;
29 41
 			$(".Login").addClass("active");
42
+			console.log(errorState)
43
+			if (errorState) {
44
+				//自动签入
45
+				lasttime = new Date().getTime();
46
+				obj.Type = "Login";
47
+				obj.AgentType = "0";
48
+				Send();
49
+				directType="recive";
50
+				sendType="自动签入 "; //JSON.stringify(data)
51
+				//mesCont=JSON.stringify(data);
52
+				debuggerLog();
53
+				clearInterval(timer);
54
+				//loginOr=false;
55
+				errorState=false;
56
+			}else{
57
+				//签入
58
+				Send();
59
+				
60
+			}
30 61
 			//自动签入
31 62
 			//lasttime = new Date().getTime();
32 63
 			//obj.Type = "Login";
@@ -41,12 +72,23 @@ function Connect() {
41 72
 			var myDate = new Date();
42 73
 			console.log(myDate + "  receive  " + evt.data);
43 74
 			var data = JSON.parse(evt.data)[0];
75
+			//打印日志
76
+			directType="recive";
77
+			sendType=data.Type; //JSON.stringify(data)
78
+			mesCont=JSON.stringify(data);
79
+			debuggerLog()
44 80
 			if(data) {
45 81
 				var rlt = data.Result;
46 82
 				if(rlt == true) {
47 83
 					 clearInterval(timer);
48 84
 					 $('title').text('安图生物呼叫中心管理系统');
49 85
 					var type = data.Type;
86
+					if (eorrorConnect) {
87
+						LoginBack();
88
+						obj.Type = "Login";
89
+						Send();
90
+						eorrorConnect=false;
91
+					}
50 92
 					switch(type.toLowerCase()) {
51 93
 						//case "heart": HeartBack(); break;//心跳
52 94
 						case "login":
@@ -102,7 +144,6 @@ function Connect() {
102 144
 //						case "agentstateagent":
103 145
 //	                        AgentStateAgentBack(data);
104 146
 //	                        break; //坐席状态通知
105
-	                        
106 147
 						case "callid":
107 148
 							CallIDBack(data);
108 149
 							break; //获取callid
@@ -160,6 +201,11 @@ function Connect() {
160 201
 		};
161 202
 		//连接关闭的回调方法
162 203
 		ws.onclose = function(evt) {
204
+			directType="recive";
205
+			sendType="close"; //JSON.stringify(data)
206
+			mesCont=JSON.stringify(evt);
207
+			debuggerLog();
208
+			alert("连接关闭");
163 209
 			if(cls == 0) {
164 210
 				cls = 1;
165 211
 				//console.log("连接关闭!");
@@ -171,6 +217,10 @@ function Connect() {
171 217
 		};
172 218
 		//连接发生错误的回调方法
173 219
 		ws.onerror = function(evt) {
220
+			directType="recive";
221
+			sendType="连接错误 "; //JSON.stringify(data)
222
+			mesCont=JSON.stringify(evt);
223
+			debuggerLog();
174 224
 			//产生异常
175 225
 			$(".hwzt").text('连接出现异常!');
176 226
 		    showMsgNotification('呼叫系统提示', '连接出现异常');  //暂时关闭
@@ -189,24 +239,132 @@ function reconnect() {
189 239
 	lockReconnect = true;
190 240
 	//没连接上会一直重连,设置延迟避免请求过多
191 241
 	setTimeout(function() {
242
+		directType="send";
243
+		sendType="重连中 "; //JSON.stringify(data)
244
+		mesCont="重连中";
245
+		debuggerLog();
192 246
 		console.log(new Date() + "    " + "重连中……");
193 247
 		createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
194 248
 		lockReconnect = false;
195 249
 	}, 2000);
196 250
 }
251
+function debuggerLog(){
252
+	$.post(huayi.config.callcenter_url + 'Log/CallOpt', {
253
+		direct: directType,
254
+		type: sendType,
255
+		cont: mesCont,
256
+		"token": $.cookie("token")
257
+	}, function(result) {
258
+		result = $.parseJSON(result);
259
+		if(result.state.toLowerCase() == "warning") {
260
+			//layer.msg("创建工单成功");
261
+		}
262
+	})
263
+}
264
+//异常重连
265
+function errorFun(){
266
+	clearInterval(timer);
267
+	var errorNum=0
268
+	timer = setInterval(function() {
269
+		errorNum++;
270
+		if (errorNum>2) {
271
+			//$("#top-search li i").removeClass("active");
272
+			$(".hwzt").text('连接异常!');
273
+		}else{
274
+			LogoutBack();
275
+		}
276
+		reconnect();
277
+		$(".hwzt").text('连接异常!');
278
+	}, 15000);
279
+}
280
+noLine();
281
+clearInterval(recon);
282
+recon = setInterval(function () { 
283
+	if(loginOr){
284
+		noLine();
285
+		setTimeout(function () {
286
+			lineState();
287
+    	}, 2000);
288
+	}
289
+}, 1000*10);
290
+function lineState(){
291
+	if (reconnecTion) {
292
+		reconnecTion=false;
293
+	}else{
294
+		directType="send";
295
+		sendType="断网 "; //JSON.stringify(data)
296
+		mesCont="断网";
297
+		debuggerLog();
298
+		errorState=true;
299
+		errorFun();
300
+		var numEorr=0;
301
+		numEorr++;
302
+		if (numEorr>2) {
303
+			$("#top-search li i").removeClass("active");
304
+		}
305
+		LogoutBack();
306
+		$(".hwzt").text('网络异常!');
307
+	}
308
+}
309
+function noLine(){
310
+	$.ajax({
311
+		type: "get",
312
+		url: huayi.config.callcenter_url + 'UserAccount/GetNowUser',
313
+		async: true,
314
+		dataType: 'json',
315
+		data: {
316
+			"token": $.cookie("token")
317
+		},
318
+		success: function(data) {
319
+			reconnecTion = data.data.user.F_UserCode;
320
+		}
321
+	});
322
+}
197 323
 //发送
198 324
 function Send() {
199 325
 	if(ws.readyState != ws.OPEN) {
200
-		reconnect();
326
+		if(loginOr){
327
+			errorState=true;
328
+			LogoutBack();
329
+			errorFun();
330
+			directType="send";
331
+			sendType=ws.readyState; //JSON.stringify(data)
332
+			mesCont="异常了";
333
+			debuggerLog();
334
+			$(".hwzt").text('连接异常!');
335
+			reconnect();
336
+		}else{
337
+			errorState=false;
338
+			LogoutBack();
339
+			errorFun();
340
+			directType="send";
341
+			sendType=ws.readyState; //JSON.stringify(data)
342
+			mesCont="异常了";
343
+			debuggerLog();
344
+			$(".hwzt").text('连接异常!');
345
+			reconnect();
346
+		}
347
+		
201 348
 	}
202 349
 	if(ws.readyState == ws.OPEN) {
350
+		if (obj.Type) {
351
+			directType="send";
352
+			sendType=obj.Type;
353
+			mesCont=JSON.stringify(obj);
354
+			debuggerLog()
355
+		}else{
356
+			directType="send";
357
+			sendType="建立连接";
358
+			mesCont=JSON.stringify(obj);
359
+			debuggerLog()
360
+		}
203 361
 		console.log(new Date() + "  send  " + JSON.stringify(obj));
204 362
 		ws.send(JSON.stringify(obj));
205 363
 	}
206 364
 }
207 365
 //心跳检测
208 366
 var heartCheck = {
209
-	timeout: 25000, //25秒
367
+	timeout: 1000, //25秒
210 368
 	timeoutObj: null,
211 369
 	serverTimeoutObj: null,
212 370
 	reset: function() {
@@ -223,6 +381,17 @@ var heartCheck = {
223 381
 			Send();
224 382
 			self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了
225 383
 				ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
384
+				//同步签出状态
385
+				$("#top-search li i").removeClass("active");
386
+				$(".Login").addClass("active");
387
+				$(".zxzt").removeClass("bl").addClass("br");
388
+				$(".fwzt").removeClass("bl").addClass("br");
389
+				$(".hwzt").text('');
390
+				//打印日志
391
+				directType="heart";
392
+				sendType="心跳"; //JSON.stringify(data)
393
+				mesCont="未收到";
394
+				debuggerLog();
226 395
 			}, self.timeout)
227 396
 		}, this.timeout)
228 397
 	}
@@ -230,17 +399,18 @@ var heartCheck = {
230 399
 
231 400
 //签入
232 401
 function LoginBack() {
402
+	loginOr=true;
233 403
 	$("#top-search li i").removeClass("active");
234 404
 	$(".Logout").addClass("active");
235 405
 	$(".SayBusy").addClass("active");
236 406
 	$(".MakeCall").addClass("active");
237
-
238 407
 	$(".zxzt").removeClass("br").addClass("bl");
239 408
 	$(".fwzt").removeClass("br").addClass("bl");
240 409
 	$(".hwzt").text('空闲');
241 410
 }
242 411
 //签出
243 412
 function LogoutBack() {
413
+	loginOr=false;
244 414
 	$("#top-search li i").removeClass("active");
245 415
 	$(".Login").addClass("active");
246 416
 	$(".zxzt").removeClass("bl").addClass("br");