刘河 5 éve
szülő
commit
daaf1f28e1
2 módosított fájl, 13 hozzáadás és 16 törlés
  1. 9 0
      client/client.go
  2. 4 16
      cmd/npc/sdk.go

+ 9 - 0
client/client.go

@@ -42,9 +42,16 @@ func NewRPClient(svraddr string, vKey string, bridgeConnType string, proxyUrl st
 	}
 }
 
+var NowStatus int
+var CloseClient bool
 //start
 func (s *TRPClient) Start() {
 retry:
+	NowStatus = 0
+	if CloseClient {
+		CloseClient = false
+		return
+	}
 	c, err := NewConn(s.bridgeConnType, s.vKey, s.svrAddr, common.WORK_MAIN, s.proxyUrl)
 	if err != nil {
 		logs.Error("The connection server failed and will be reconnected in five seconds, error", err.Error())
@@ -66,6 +73,7 @@ retry:
 	if s.cnf != nil && len(s.cnf.Healths) > 0 {
 		go heathCheck(s.cnf.Healths, s.signal)
 	}
+	NowStatus = 1
 	//msg connection, eg udp
 	s.handleMain()
 }
@@ -279,6 +287,7 @@ loop:
 }
 
 func (s *TRPClient) Close() {
+	CloseClient = true
 	if s.tunnel != nil {
 		s.tunnel.Close()
 	}

+ 4 - 16
cmd/npc/sdk.go

@@ -6,44 +6,31 @@ import (
 	"github.com/cnlh/nps/client"
 	"github.com/cnlh/nps/lib/common"
 	"github.com/cnlh/nps/lib/version"
-	"time"
 )
 
-var status int
-var closeBefore int
 var cl *client.TRPClient
 
 //export StartClientByVerifyKey
 func StartClientByVerifyKey(serverAddr, verifyKey, connType, proxyUrl *C.char) int {
 	logs.SetLogger("store")
 	if cl != nil {
-		closeBefore = 1
 		cl.Close()
 	}
 	cl = client.NewRPClient(C.GoString(serverAddr), C.GoString(verifyKey), C.GoString(connType), C.GoString(proxyUrl), nil)
-	closeBefore = 0
 	go func() {
-		for {
-			status = 1
-			cl.Start()
-			status = 0
-			if closeBefore == 1 {
-				return
-			}
-			time.Sleep(time.Second * 5)
-		}
+		cl.Start()
+		return
 	}()
 	return 1
 }
 
 //export GetClientStatus
 func GetClientStatus() int {
-	return status
+	return client.NowStatus
 }
 
 //export CloseClient
 func CloseClient() {
-	closeBefore = 1
 	cl.Close()
 }
 
@@ -51,6 +38,7 @@ func CloseClient() {
 func Version() *C.char {
 	return C.CString(version.VERSION)
 }
+
 //export Logs
 func Logs() *C.char {
 	return C.CString(common.GetLogMsg())