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

话务日志,异常重连,定期存token

miaofuhao лет назад: 6
Родитель
Сommit
cd644549ac
2 измененных файлов с 150 добавлено и 2 удалено
  1. 1 0
      CallCenterWeb.UI/js/index.js
  2. 149 2
      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);

+ 149 - 2
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,24 @@ function Connect() {
27 39
 
28 40
 			cls = 0;
29 41
 			$(".Login").addClass("active");
42
+			if (errorState) {
43
+				//自动签入
44
+				lasttime = new Date().getTime();
45
+				obj.Type = "Login";
46
+				obj.AgentType = "0";
47
+				Send();
48
+				directType="recive";
49
+				sendType="自动签入 "; //JSON.stringify(data)
50
+				//mesCont=JSON.stringify(data);
51
+				debuggerLog();
52
+				clearInterval(timer);
53
+				//loginOr=false;
54
+				errorState=false;
55
+			}else{
56
+				//签入
57
+				Send();
58
+				
59
+			}
30 60
 			//自动签入
31 61
 			//lasttime = new Date().getTime();
32 62
 			//obj.Type = "Login";
@@ -41,12 +71,23 @@ function Connect() {
41 71
 			var myDate = new Date();
42 72
 			console.log(myDate + "  receive  " + evt.data);
43 73
 			var data = JSON.parse(evt.data)[0];
74
+			//打印日志
75
+			directType="recive";
76
+			sendType=data.Type; //JSON.stringify(data)
77
+			mesCont=JSON.stringify(data);
78
+			debuggerLog()
44 79
 			if(data) {
45 80
 				var rlt = data.Result;
46 81
 				if(rlt == true) {
47 82
 					 clearInterval(timer);
48 83
 					 $('title').text('安图生物呼叫中心管理系统');
49 84
 					var type = data.Type;
85
+					if (eorrorConnect) {
86
+						LoginBack();
87
+						obj.Type = "Login";
88
+						Send();
89
+						eorrorConnect=false;
90
+					}
50 91
 					switch(type.toLowerCase()) {
51 92
 						//case "heart": HeartBack(); break;//心跳
52 93
 						case "login":
@@ -102,7 +143,6 @@ function Connect() {
102 143
 //						case "agentstateagent":
103 144
 //	                        AgentStateAgentBack(data);
104 145
 //	                        break; //坐席状态通知
105
-	                        
106 146
 						case "callid":
107 147
 							CallIDBack(data);
108 148
 							break; //获取callid
@@ -160,6 +200,11 @@ function Connect() {
160 200
 		};
161 201
 		//连接关闭的回调方法
162 202
 		ws.onclose = function(evt) {
203
+			var data = JSON.parse(evt.data)[0];
204
+			directType="recive";
205
+			sendType="close"; //JSON.stringify(data)
206
+			mesCont=JSON.stringify(data);
207
+			debuggerLog();
163 208
 			if(cls == 0) {
164 209
 				cls = 1;
165 210
 				//console.log("连接关闭!");
@@ -171,6 +216,11 @@ function Connect() {
171 216
 		};
172 217
 		//连接发生错误的回调方法
173 218
 		ws.onerror = function(evt) {
219
+			var data = JSON.parse(evt.data)[0];
220
+			directType="recive";
221
+			sendType="连接错误 "; //JSON.stringify(data)
222
+			mesCont=JSON.stringify(data);
223
+			debuggerLog();
174 224
 			//产生异常
175 225
 			$(".hwzt").text('连接出现异常!');
176 226
 		    showMsgNotification('呼叫系统提示', '连接出现异常');  //暂时关闭
@@ -189,17 +239,112 @@ 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) {
326
+		errorState=true;
327
+		LogoutBack();
328
+		errorFun();
329
+		directType="send";
330
+		sendType=ws.readyState; //JSON.stringify(data)
331
+		mesCont="异常了";
332
+		debuggerLog();
333
+		$(".hwzt").text('连接异常!');
200 334
 		reconnect();
201 335
 	}
202 336
 	if(ws.readyState == ws.OPEN) {
337
+		if (obj.Type) {
338
+			directType="send";
339
+			sendType=obj.Type;
340
+			mesCont=JSON.stringify(obj);
341
+			debuggerLog()
342
+		}else{
343
+			directType="send";
344
+			sendType="建立连接";
345
+			mesCont=JSON.stringify(obj);
346
+			debuggerLog()
347
+		}
203 348
 		console.log(new Date() + "  send  " + JSON.stringify(obj));
204 349
 		ws.send(JSON.stringify(obj));
205 350
 	}
@@ -230,6 +375,7 @@ var heartCheck = {
230 375
 
231 376
 //签入
232 377
 function LoginBack() {
378
+	loginOr=true;
233 379
 	$("#top-search li i").removeClass("active");
234 380
 	$(".Logout").addClass("active");
235 381
 	$(".SayBusy").addClass("active");
@@ -241,6 +387,7 @@ function LoginBack() {
241 387
 }
242 388
 //签出
243 389
 function LogoutBack() {
390
+	loginOr=false;
244 391
 	$("#top-search li i").removeClass("active");
245 392
 	$(".Login").addClass("active");
246 393
 	$(".zxzt").removeClass("bl").addClass("br");