Преглед на файлове

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

miaofuhao преди 6 години
родител
ревизия
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
 		"token": $.cookie("token")
630
 		"token": $.cookie("token")
631
 	}, function(result) {
631
 	}, function(result) {
632
 		if(result.state.toLowerCase() == "success") {
632
 		if(result.state.toLowerCase() == "success") {
633
+			$.cookie("token", $.cookie("token"), {expires: 7});
633
 			$(".dpd").text(result.data.dpd);
634
 			$(".dpd").text(result.data.dpd);
634
 			$(".djd").text(result.data.djd);
635
 			$(".djd").text(result.data.djd);
635
 			//   $(".dcl").text(result.data.dcl);
636
 			//   $(".dcl").text(result.data.dcl);

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

2
 	timer,hidTel,hidCallID,hidActionID;
2
 	timer,hidTel,hidCallID,hidActionID;
3
 var lockReconnect = false; //避免重复连接
3
 var lockReconnect = false; //避免重复连接
4
 var obj = {};
4
 var obj = {};
5
-
5
+var directType;
6
+var sendType;
7
+var mesCont;
8
+var eorrorConnect;
6
 var cls = 0;
9
 var cls = 0;
7
 var lasttime = new Date().getTime();
10
 var lasttime = new Date().getTime();
11
+var errorState;
12
+var reconnecTion;
13
+var recon;
14
+var loginOr;
8
 //创建scoket连接
15
 //创建scoket连接
9
 function createWebSocket() {
16
 function createWebSocket() {
10
 	try {
17
 	try {
12
 		
19
 		
13
 		Connect();
20
 		Connect();
14
 	} catch(e) {
21
 	} catch(e) {
22
+		//打印日志
23
+		directType="lianjie";
24
+		sendType="异常错误"; //JSON.stringify(data)
25
+		mesCont=e.message;
26
+		debuggerLog();
15
 		reconnect();
27
 		reconnect();
16
 	}
28
 	}
17
 }
29
 }
27
 
39
 
28
 			cls = 0;
40
 			cls = 0;
29
 			$(".Login").addClass("active");
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
 			//lasttime = new Date().getTime();
62
 			//lasttime = new Date().getTime();
32
 			//obj.Type = "Login";
63
 			//obj.Type = "Login";
41
 			var myDate = new Date();
72
 			var myDate = new Date();
42
 			console.log(myDate + "  receive  " + evt.data);
73
 			console.log(myDate + "  receive  " + evt.data);
43
 			var data = JSON.parse(evt.data)[0];
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
 			if(data) {
80
 			if(data) {
45
 				var rlt = data.Result;
81
 				var rlt = data.Result;
46
 				if(rlt == true) {
82
 				if(rlt == true) {
47
 					 clearInterval(timer);
83
 					 clearInterval(timer);
48
 					 $('title').text('安图生物呼叫中心管理系统');
84
 					 $('title').text('安图生物呼叫中心管理系统');
49
 					var type = data.Type;
85
 					var type = data.Type;
86
+					if (eorrorConnect) {
87
+						LoginBack();
88
+						obj.Type = "Login";
89
+						Send();
90
+						eorrorConnect=false;
91
+					}
50
 					switch(type.toLowerCase()) {
92
 					switch(type.toLowerCase()) {
51
 						//case "heart": HeartBack(); break;//心跳
93
 						//case "heart": HeartBack(); break;//心跳
52
 						case "login":
94
 						case "login":
102
 //						case "agentstateagent":
144
 //						case "agentstateagent":
103
 //	                        AgentStateAgentBack(data);
145
 //	                        AgentStateAgentBack(data);
104
 //	                        break; //坐席状态通知
146
 //	                        break; //坐席状态通知
105
-	                        
106
 						case "callid":
147
 						case "callid":
107
 							CallIDBack(data);
148
 							CallIDBack(data);
108
 							break; //获取callid
149
 							break; //获取callid
160
 		};
201
 		};
161
 		//连接关闭的回调方法
202
 		//连接关闭的回调方法
162
 		ws.onclose = function(evt) {
203
 		ws.onclose = function(evt) {
204
+			directType="recive";
205
+			sendType="close"; //JSON.stringify(data)
206
+			mesCont=JSON.stringify(evt);
207
+			debuggerLog();
208
+			alert("连接关闭");
163
 			if(cls == 0) {
209
 			if(cls == 0) {
164
 				cls = 1;
210
 				cls = 1;
165
 				//console.log("连接关闭!");
211
 				//console.log("连接关闭!");
171
 		};
217
 		};
172
 		//连接发生错误的回调方法
218
 		//连接发生错误的回调方法
173
 		ws.onerror = function(evt) {
219
 		ws.onerror = function(evt) {
220
+			directType="recive";
221
+			sendType="连接错误 "; //JSON.stringify(data)
222
+			mesCont=JSON.stringify(evt);
223
+			debuggerLog();
174
 			//产生异常
224
 			//产生异常
175
 			$(".hwzt").text('连接出现异常!');
225
 			$(".hwzt").text('连接出现异常!');
176
 		    showMsgNotification('呼叫系统提示', '连接出现异常');  //暂时关闭
226
 		    showMsgNotification('呼叫系统提示', '连接出现异常');  //暂时关闭
189
 	lockReconnect = true;
239
 	lockReconnect = true;
190
 	//没连接上会一直重连,设置延迟避免请求过多
240
 	//没连接上会一直重连,设置延迟避免请求过多
191
 	setTimeout(function() {
241
 	setTimeout(function() {
242
+		directType="send";
243
+		sendType="重连中 "; //JSON.stringify(data)
244
+		mesCont="重连中";
245
+		debuggerLog();
192
 		console.log(new Date() + "    " + "重连中……");
246
 		console.log(new Date() + "    " + "重连中……");
193
 		createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
247
 		createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
194
 		lockReconnect = false;
248
 		lockReconnect = false;
195
 	}, 2000);
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
 function Send() {
324
 function Send() {
199
 	if(ws.readyState != ws.OPEN) {
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
 	if(ws.readyState == ws.OPEN) {
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
 		console.log(new Date() + "  send  " + JSON.stringify(obj));
361
 		console.log(new Date() + "  send  " + JSON.stringify(obj));
204
 		ws.send(JSON.stringify(obj));
362
 		ws.send(JSON.stringify(obj));
205
 	}
363
 	}
206
 }
364
 }
207
 //心跳检测
365
 //心跳检测
208
 var heartCheck = {
366
 var heartCheck = {
209
-	timeout: 25000, //25秒
367
+	timeout: 1000, //25秒
210
 	timeoutObj: null,
368
 	timeoutObj: null,
211
 	serverTimeoutObj: null,
369
 	serverTimeoutObj: null,
212
 	reset: function() {
370
 	reset: function() {
223
 			Send();
381
 			Send();
224
 			self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了
382
 			self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了
225
 				ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
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
 			}, self.timeout)
395
 			}, self.timeout)
227
 		}, this.timeout)
396
 		}, this.timeout)
228
 	}
397
 	}
230
 
399
 
231
 //签入
400
 //签入
232
 function LoginBack() {
401
 function LoginBack() {
402
+	loginOr=true;
233
 	$("#top-search li i").removeClass("active");
403
 	$("#top-search li i").removeClass("active");
234
 	$(".Logout").addClass("active");
404
 	$(".Logout").addClass("active");
235
 	$(".SayBusy").addClass("active");
405
 	$(".SayBusy").addClass("active");
236
 	$(".MakeCall").addClass("active");
406
 	$(".MakeCall").addClass("active");
237
-
238
 	$(".zxzt").removeClass("br").addClass("bl");
407
 	$(".zxzt").removeClass("br").addClass("bl");
239
 	$(".fwzt").removeClass("br").addClass("bl");
408
 	$(".fwzt").removeClass("br").addClass("bl");
240
 	$(".hwzt").text('空闲');
409
 	$(".hwzt").text('空闲');
241
 }
410
 }
242
 //签出
411
 //签出
243
 function LogoutBack() {
412
 function LogoutBack() {
413
+	loginOr=false;
244
 	$("#top-search li i").removeClass("active");
414
 	$("#top-search li i").removeClass("active");
245
 	$(".Login").addClass("active");
415
 	$(".Login").addClass("active");
246
 	$(".zxzt").removeClass("bl").addClass("br");
416
 	$(".zxzt").removeClass("bl").addClass("br");