mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-24 23:16:52 +00:00
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:
@@ -86,11 +86,7 @@ func (b *Binance) WsConnect() error {
|
||||
|
||||
go b.wsReadData()
|
||||
|
||||
subs, err := b.GenerateSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return b.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// KeepAuthKeyAlive will continuously send messages to
|
||||
|
||||
@@ -61,12 +61,8 @@ func (b *Bitfinex) WsConnect() error {
|
||||
}
|
||||
}
|
||||
|
||||
subs, err := b.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go b.WsDataHandler()
|
||||
return b.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData receives and passes on websocket messages for processing
|
||||
|
||||
@@ -95,15 +95,6 @@ func (b *Bitmex) WsConnect() error {
|
||||
}
|
||||
|
||||
go b.wsReadData()
|
||||
subs, err := b.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = b.Websocket.SubscribeToChannels(subs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = b.websocketSendAuth()
|
||||
if err != nil {
|
||||
|
||||
@@ -40,12 +40,8 @@ func (b *Bitstamp) WsConnect() error {
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
}
|
||||
subs, err := b.generateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go b.wsReadData()
|
||||
return b.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData receives and passes on websocket messages for processing
|
||||
|
||||
@@ -40,11 +40,7 @@ func (b *BTCMarkets) WsConnect() error {
|
||||
log.Debugf(log.ExchangeSys, "%s Connected to Websocket.\n", b.Name)
|
||||
}
|
||||
go b.wsReadData()
|
||||
subs, err := b.generateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return b.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData receives and passes on websocket messages for processing
|
||||
|
||||
@@ -49,11 +49,7 @@ func (b *BTSE) WsConnect() error {
|
||||
}
|
||||
}
|
||||
|
||||
subs, err := b.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return b.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// WsAuthenticate Send an authentication message to receive auth data
|
||||
|
||||
@@ -38,12 +38,8 @@ func (c *CoinbasePro) WsConnect() error {
|
||||
return err
|
||||
}
|
||||
|
||||
subs, err := c.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go c.wsReadData()
|
||||
return c.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData receives and passes on websocket messages for processing
|
||||
|
||||
@@ -49,11 +49,7 @@ func (c *Coinbene) WsConnect() error {
|
||||
c.Websocket.SetCanUseAuthenticatedEndpoints(false)
|
||||
}
|
||||
}
|
||||
subs, err := c.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// GenerateDefaultSubscriptions generates stuff
|
||||
|
||||
@@ -61,15 +61,6 @@ func (c *COINUT) WsConnect() error {
|
||||
c.Websocket.SetCanUseAuthenticatedEndpoints(false)
|
||||
log.Error(log.WebsocketMgr, err)
|
||||
}
|
||||
subs, err := c.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = c.Websocket.SubscribeToChannels(subs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// define bi-directional communication
|
||||
channels = make(map[string]chan []byte)
|
||||
|
||||
@@ -69,11 +69,7 @@ func (f *FTX) WsConnect() error {
|
||||
}
|
||||
}
|
||||
|
||||
subs, err := f.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return f.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// WsAuth sends an authentication message to receive auth data
|
||||
|
||||
@@ -62,11 +62,7 @@ func (g *Gateio) WsConnect() error {
|
||||
}
|
||||
}
|
||||
|
||||
subs, err := g.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return g.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Gateio) wsServerSignIn() error {
|
||||
|
||||
@@ -50,11 +50,7 @@ func (h *HitBTC) WsConnect() error {
|
||||
log.Errorf(log.ExchangeSys, "%v - authentication failed: %v\n", h.Name, err)
|
||||
}
|
||||
|
||||
subs, err := h.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return h.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData receives and passes on websocket messages for processing
|
||||
|
||||
@@ -83,11 +83,7 @@ func (h *HUOBI) WsConnect() error {
|
||||
}
|
||||
|
||||
go h.wsReadData()
|
||||
subs, err := h.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return h.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *HUOBI) wsDial(dialer *websocket.Dialer) error {
|
||||
|
||||
@@ -131,11 +131,7 @@ func (k *Kraken) WsConnect() error {
|
||||
k.Name,
|
||||
err)
|
||||
}
|
||||
gensubs, err := k.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return k.Websocket.SubscribeToChannels(gensubs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsFunnelConnectionData funnels both auth and public ws data into one manageable place
|
||||
|
||||
@@ -50,11 +50,7 @@ func (l *LakeBTC) WsConnect() error {
|
||||
return err
|
||||
}
|
||||
go l.wsHandleIncomingData()
|
||||
subs, err := l.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return l.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *LakeBTC) listenToEndpoints() error {
|
||||
|
||||
@@ -203,11 +203,7 @@ func (o *OKGroup) WsConnect() error {
|
||||
}
|
||||
}
|
||||
|
||||
subs, err := o.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return o.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// WsLogin sends a login request to websocket to enable access to authenticated endpoints
|
||||
|
||||
@@ -53,12 +53,8 @@ func (p *Poloniex) WsConnect() error {
|
||||
}
|
||||
|
||||
go p.wsReadData()
|
||||
subs, err := p.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return p.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Poloniex) getCurrencyIDMap() error {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -41,12 +41,8 @@ func (z *ZB) WsConnect() error {
|
||||
return err
|
||||
}
|
||||
|
||||
subs, err := z.GenerateDefaultSubscriptions()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go z.wsReadData()
|
||||
return z.Websocket.SubscribeToChannels(subs)
|
||||
return nil
|
||||
}
|
||||
|
||||
// wsReadData handles all the websocket data coming from the websocket
|
||||
|
||||
Reference in New Issue
Block a user