diff --git a/client/client.go b/client/client.go index 3a9d365..924662f 100755 --- a/client/client.go +++ b/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() } diff --git a/cmd/npc/sdk.go b/cmd/npc/sdk.go index 0edb2f5..0fc2b5b 100644 --- a/cmd/npc/sdk.go +++ b/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())