From c02453648e475ab4b3c401591551a9ed05293fa4 Mon Sep 17 00:00:00 2001 From: Yilun Date: Wed, 24 Jan 2024 00:57:15 -0800 Subject: [PATCH] Multiclient reconnect will also trigger onConnect event Signed-off-by: Yilun --- multiclient.go | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/multiclient.go b/multiclient.go index 8148d910..d85797c9 100644 --- a/multiclient.go +++ b/multiclient.go @@ -180,18 +180,26 @@ func NewMultiClient(account *Account, baseIdentifier string, numSubClients int, wg.Done() - node, ok := <-client.OnConnect.C - if !ok { - return - } + go func() { + for { + select { + case node, ok := <-client.OnConnect.C: + if !ok { + return + } - m.lock.RLock() - if m.isClosed { - m.lock.RUnlock() - return - } - m.OnConnect.receive(node) - m.lock.RUnlock() + m.lock.RLock() + if m.isClosed { + m.lock.RUnlock() + return + } + m.OnConnect.receive(node) + m.lock.RUnlock() + case <-m.onClose: + return + } + } + }() for { select {