wangkaiyue 3 lat temu
rodzic
commit
7a4e9b9200
1 zmienionych plików z 16 dodań i 6 usunięć
  1. 16 6
      core/node/register.go

+ 16 - 6
core/node/register.go

@@ -41,15 +41,25 @@ func (n *Node) RegisterWithContext(ctx context.Context, serverCode string, serve
 	}
 	}
 	log.Printf("service registed gateway for %s success!\n", key)
 	log.Printf("service registed gateway for %s success!\n", key)
 	//续租约
 	//续租约
-	_, err = n.Client.KeepAlive(ctx, lease.ID)
+	keepAlive, err := n.Client.KeepAlive(ctx, lease.ID)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	//go func() {
-	//	for {
-	//		<-keepAlive
-	//	}
-	//}()
+	go func() {
+		for {
+			select {
+			case <-n.Client.Ctx().Done():
+				fmt.Println("server closed")
+				return
+			case _, ok := <-keepAlive:
+				if !ok {
+					fmt.Println("keep live channel closed")
+					_, _ = n.Client.Revoke(ctx, lease.ID)
+					return
+				}
+			}
+		}
+	}()
 	return func() {
 	return func() {
 		_, _ = n.Client.Revoke(ctx, lease.ID)
 		_, _ = n.Client.Revoke(ctx, lease.ID)
 	}, nil
 	}, nil