wangchuanjin 7 жил өмнө
parent
commit
ace7d72371

+ 1 - 4
src/jfw/front/websocket.go

@@ -93,9 +93,8 @@ func GetWsByCode(param []string) bool {
 	ms.Lock.Unlock()
 	ms.Lock.Unlock()
 	if wss != nil && wss.Conn != nil {
 	if wss != nil && wss.Conn != nil {
 		infoData := LoginInfo(src, openid, wss.Conn.Sess)
 		infoData := LoginInfo(src, openid, wss.Conn.Sess)
-		log.Println(infoData)
 		sendmessage, _ := json.Marshal(infoData)
 		sendmessage, _ := json.Marshal(infoData)
-		if err := websocket.Message.Send(wss.Conn, sendmessage); err != nil {
+		if err := websocket.Message.Send(wss.Conn, string(sendmessage)); err != nil {
 			log.Println("socket send fail..", err)
 			log.Println("socket send fail..", err)
 			return false
 			return false
 		} else {
 		} else {
@@ -154,7 +153,6 @@ func ServeWss(conn *websocket.Conn) {
 		} else {
 		} else {
 			//心跳监测
 			//心跳监测
 			if shareData == "HeartBeat" {
 			if shareData == "HeartBeat" {
-				log.Println("send...", string(shareData))
 				websocket.Message.Send(conn, "HeartBeat")
 				websocket.Message.Send(conn, "HeartBeat")
 				continue
 				continue
 			}
 			}
@@ -163,7 +161,6 @@ func ServeWss(conn *websocket.Conn) {
 			if shareIds != "" && len(shareidlist) > 1 {
 			if shareIds != "" && len(shareidlist) > 1 {
 				shareidnum := shareidlist[0]
 				shareidnum := shareidlist[0]
 				shareidkop := shareidlist[1]
 				shareidkop := shareidlist[1]
-				log.Println(se.DecodeString(shareidnum), se.DecodeString(shareidkop))
 				PutWsByCode(se.DecodeString(shareidnum), conn)
 				PutWsByCode(se.DecodeString(shareidnum), conn)
 				PutWsByCode(se.DecodeString(shareidkop), conn)
 				PutWsByCode(se.DecodeString(shareidkop), conn)
 				websocket.Message.Send(conn, "ok")
 				websocket.Message.Send(conn, "ok")

+ 0 - 4
src/jfw/front/websocket.go.bak

@@ -98,7 +98,6 @@ func GetWsByCode(param []string) bool {
 	ms.Lock.Unlock()
 	ms.Lock.Unlock()
 	if wss != nil && wss.Conn != nil {
 	if wss != nil && wss.Conn != nil {
 		infoData := LoginInfo(src, openid, wss.Conn.Sess)
 		infoData := LoginInfo(src, openid, wss.Conn.Sess)
-		log.Println(infoData)
 		sendmessage, _ := json.Marshal(infoData)
 		sendmessage, _ := json.Marshal(infoData)
 		if err := wss.Conn.WriteMessage(websocket.TextMessage, sendmessage); err != nil {
 		if err := wss.Conn.WriteMessage(websocket.TextMessage, sendmessage); err != nil {
 			log.Println("socket send fail..", err)
 			log.Println("socket send fail..", err)
@@ -154,14 +153,12 @@ func ServeWss(w http.ResponseWriter, r *http.Request) {
 	if err == nil {
 	if err == nil {
 		for {
 		for {
 			_, shareData, err := conn.ReadMessage()
 			_, shareData, err := conn.ReadMessage()
-			log.Println("========wait", string(shareData))
 			if err != nil {
 			if err != nil {
 				//log.Println("前台socket关闭,后台socket断开并退出循环。。。。")
 				//log.Println("前台socket关闭,后台socket断开并退出循环。。。。")
 				break
 				break
 			} else {
 			} else {
 				//心跳监测
 				//心跳监测
 				if string(shareData) == "HeartBeat" {
 				if string(shareData) == "HeartBeat" {
-					log.Println("send...", string(shareData))
 					conn.WriteMessage(websocket.TextMessage, []byte("\"HeartBeat\""))
 					conn.WriteMessage(websocket.TextMessage, []byte("\"HeartBeat\""))
 					continue
 					continue
 				}
 				}
@@ -170,7 +167,6 @@ func ServeWss(w http.ResponseWriter, r *http.Request) {
 				if shareIds != "" && len(shareidlist) > 1 {
 				if shareIds != "" && len(shareidlist) > 1 {
 					shareidnum := shareidlist[0]
 					shareidnum := shareidlist[0]
 					shareidkop := shareidlist[1]
 					shareidkop := shareidlist[1]
-					log.Println(se.DecodeString(shareidnum), se.DecodeString(shareidkop))
 					PutWsByCode(se.DecodeString(shareidnum), conn)
 					PutWsByCode(se.DecodeString(shareidnum), conn)
 					PutWsByCode(se.DecodeString(shareidkop), conn)
 					PutWsByCode(se.DecodeString(shareidkop), conn)
 					conn.WriteMessage(websocket.TextMessage, []byte("\"ok\""))
 					conn.WriteMessage(websocket.TextMessage, []byte("\"ok\""))

+ 17 - 15
src/web/staticres/js/login.js

@@ -31,18 +31,21 @@ var WebSocketHeartCheck = function(){
     this.timeoutObj = null;
     this.timeoutObj = null;
     this.serverTimeoutObj = null;
     this.serverTimeoutObj = null;
     this.reset = function(){
     this.reset = function(){
-		console.info("reset。。。");
         clearTimeout(this.timeoutObj);
         clearTimeout(this.timeoutObj);
         clearTimeout(this.serverTimeoutObj);
         clearTimeout(this.serverTimeoutObj);
         return this;
         return this;
     }
     }
     this.start = function(){
     this.start = function(){
+		if(loginflag){
+			return;
+		}
         var self = this;
         var self = this;
         this.timeoutObj = setTimeout(function(){
         this.timeoutObj = setTimeout(function(){
             //这里发送一个心跳,后端收到后,返回一个心跳消息,
             //这里发送一个心跳,后端收到后,返回一个心跳消息,
             //onmessage拿到返回的心跳就说明连接正常
             //onmessage拿到返回的心跳就说明连接正常
-			console.info("send HeartBeat");
-            ws.send("HeartBeat");
+			if(ws.readyState==1){
+            	ws.send("HeartBeat");
+			}
             self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了
             self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了
                 ws.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
                 ws.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
             }, self.timeout);
             }, self.timeout);
@@ -63,28 +66,27 @@ var createWebSocket = function(wsUrl){
 //
 //
 var initEventHandle = function(){
 var initEventHandle = function(){
 	ws.onmessage = function(e){
 	ws.onmessage = function(e){
-		console.info(e.data);
-		console.info("recive。。。");
 		if(e.data==""){
 		if(e.data==""){
 			return
 			return
-		}else if(e.data=="\"ok\""){//重新发送shareid
+		}else if(e.data=="ok"){//重新发送shareid
 			clearInterval(sendMsgIntervalObj);
 			clearInterval(sendMsgIntervalObj);
-			console.info(sendMsgIntervalObj)
+			sendMsgIntervalObj = null;
 			return
 			return
-		}else if(e.data=="\"HeartBeat\""){//心跳检测
+		}else if(e.data=="HeartBeat"){//心跳检测
 			//如果获取到消息,心跳检测重置
 			//如果获取到消息,心跳检测重置
 	        //拿到任何消息都说明当前连接是正常的
 	        //拿到任何消息都说明当前连接是正常的
 	        webSocketHeartCheck.reset().start();
 	        webSocketHeartCheck.reset().start();
+			return;
 		}
 		}
 		//用户登录
 		//用户登录
 		logic(e.data,mynum);
 		logic(e.data,mynum);
 	}
 	}
 	ws.onerror = function(e){
 	ws.onerror = function(e){
-		console.info("onerror");
+		//console.info("onerror");
 		reconnect(wsUrl);
 		reconnect(wsUrl);
 	}
 	}
 	ws.onclose = function () {
 	ws.onclose = function () {
-		console.info("onclose");
+		//console.info("onclose");
         reconnect(wsUrl);
         reconnect(wsUrl);
     }
     }
 	ws.onopen = function(e) {
 	ws.onopen = function(e) {
@@ -94,11 +96,12 @@ var initEventHandle = function(){
 }
 }
 //
 //
 function reconnect(url) {
 function reconnect(url) {
-	if(webSocketHeartCheck.lockReconnect) return;
+	if(webSocketHeartCheck.lockReconnect || loginflag){
+		return;
+	}
     webSocketHeartCheck.lockReconnect = true;
     webSocketHeartCheck.lockReconnect = true;
     //没连接上会一直重连,设置延迟避免请求过多
     //没连接上会一直重连,设置延迟避免请求过多
     setTimeout(function () {
     setTimeout(function () {
-		console.info("reconnect。。。");
         createWebSocket(url);
         createWebSocket(url);
 		webSocketHeartCheck.lockReconnect = false;
 		webSocketHeartCheck.lockReconnect = false;
 		if(sendMsgIntervalObj == null){
 		if(sendMsgIntervalObj == null){
@@ -123,10 +126,7 @@ var JYLogin = function(num){
 }
 }
 var SendMsg = function(){
 var SendMsg = function(){
 	//向后台发送websocket数据
 	//向后台发送websocket数据
-	console.info("-------------000000000");
 	if (window["WebSocket"]){
 	if (window["WebSocket"]){
-		console.info("-------------11111111");
-		console.info(ws.readyState);
 		if(ws.readyState==1){
 		if(ws.readyState==1){
 			console.log("发送:"+pageshareid+"___"+kopshareid)
 			console.log("发送:"+pageshareid+"___"+kopshareid)
 			ws.send(pageshareid+"___"+kopshareid);
 			ws.send(pageshareid+"___"+kopshareid);
@@ -251,6 +251,8 @@ var logic = function(infoData,num){
 		clearInterval(loginfg);
 		clearInterval(loginfg);
 		loginflag = true;
 		loginflag = true;
 		processpage(data.shareid,num);
 		processpage(data.shareid,num);
+		//登录成功,停止心跳监测
+		webSocketHeartCheck.reset();
 		if(ws.readyState==1){
 		if(ws.readyState==1){
 			ws.send("close");
 			ws.send("close");
 			ws.close();
 			ws.close();