engine/websocket: subscribe to default channels only when actually needed (#610)

* if this is required by ws routines or sync manager
* restore previous subscriptions on reconnect
This commit is contained in:
Rauno Ots
2020-12-29 02:10:37 +01:00
committed by GitHub
parent b95cfaccab
commit d1b206c45b
24 changed files with 75 additions and 146 deletions

View File

@@ -192,11 +192,6 @@ func (w *Websocket) Connect() error {
w.trafficMonitor()
w.setConnectingStatus(true)
// flush any subscriptions from last connection if needed
w.subscriptionMutex.Lock()
w.subscriptions = nil
w.subscriptionMutex.Unlock()
err := w.connector()
if err != nil {
w.setConnectingStatus(false)
@@ -211,6 +206,14 @@ func (w *Websocket) Connect() error {
w.connectionMonitor()
}
// Resubscribe after re-connection
if len(w.subscriptions) != 0 {
err = w.Subscriber(w.subscriptions)
if err != nil {
return fmt.Errorf("%v Error subscribing %s", w.exchangeName, err)
}
}
return nil
}