|
@@ -41,15 +41,25 @@ func (n *Node) RegisterWithContext(ctx context.Context, serverCode string, serve
|
|
|
}
|
|
|
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 {
|
|
|
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() {
|
|
|
_, _ = n.Client.Revoke(ctx, lease.ID)
|
|
|
}, nil
|