start heartbeat after register
| | |
| | | SubCh: make(chan *bhome_msg.MsgPublish, 512), |
| | | } |
| | | |
| | | go startHeartbeat(ctx, handle) |
| | | |
| | | return mn, nil |
| | | } |
| | | |
| | |
| | | return errors.New("ms.handle is nil") |
| | | } |
| | | |
| | | func (ms *MicroNode) startHeartbeat() { |
| | | func startHeartbeat(ctx context.Context, h *BHBus) { |
| | | t := time.NewTicker(1 * time.Second) |
| | | defer t.Stop() |
| | | |
| | | for { |
| | | select { |
| | | case <-ms.ctx.Done(): |
| | | case <-ctx.Done(): |
| | | return |
| | | case <-t.C: |
| | | ms.handle.HeartBeat() |
| | | h.HeartBeat() |
| | | default: |
| | | time.Sleep(500 * time.Millisecond) |
| | | } |
| | |
| | | } |
| | | |
| | | func (ms *MicroNode) StartClient() { |
| | | ms.mtx.Lock() |
| | | defer ms.mtx.Unlock() |
| | | if !ms.started { |
| | | ms.started = true |
| | | |
| | | go ms.startHeartbeat() |
| | | } |
| | | } |
| | | |
| | | func (ms *MicroNode) StartServer(funcMap map[string]MicroFunc) { |
| | |
| | | ms.mtx.Unlock() |
| | | |
| | | ms.handlers = funcMap |
| | | |
| | | go ms.startHeartbeat() |
| | | |
| | | for { |
| | | select { |