From 82c79a928781694643ffcfd6982b2244e395dfae Mon Sep 17 00:00:00 2001 From: Donald Adu-Poku Date: Mon, 30 Jan 2023 22:21:51 +0000 Subject: [PATCH] stream: set connection monitor delay. (#1120) * stream: set connection monitor delay. - this fixes a bug where the connection monitor delay config value does not get set to the websocket on intialization. * multi: add connection monitor delay to exchange config. - this adds the connection monitor delay config option to the exchange type. - the validate function of the exchange type has been updated to validate the connection monitor delay value as well. * multi: resolve review issues. --- config/config.go | 5 +++++ config/config_types.go | 2 ++ exchanges/binance/binance_wrapper.go | 17 +++++++++-------- exchanges/binanceus/binanceus_wrapper.go | 17 +++++++++-------- exchanges/bitfinex/bitfinex_wrapper.go | 17 +++++++++-------- exchanges/bithumb/bithumb_wrapper.go | 15 ++++++++------- exchanges/bitmex/bitmex_wrapper.go | 17 +++++++++-------- exchanges/bitstamp/bitstamp_wrapper.go | 17 +++++++++-------- exchanges/bittrex/bittrex_wrapper.go | 17 +++++++++-------- exchanges/btcmarkets/btcmarkets_wrapper.go | 17 +++++++++-------- exchanges/btse/btse_wrapper.go | 17 +++++++++-------- exchanges/bybit/bybit_wrapper.go | 19 ++++++++++--------- exchanges/coinbasepro/coinbasepro_wrapper.go | 17 +++++++++-------- exchanges/coinut/coinut_wrapper.go | 17 +++++++++-------- exchanges/exchange_test.go | 1 + exchanges/gateio/gateio_wrapper.go | 15 ++++++++------- exchanges/gemini/gemini_wrapper.go | 17 +++++++++-------- exchanges/hitbtc/hitbtc_wrapper.go | 17 +++++++++-------- exchanges/huobi/huobi_wrapper.go | 17 +++++++++-------- exchanges/kraken/kraken_wrapper.go | 19 ++++++++++--------- exchanges/okcoin/okcoin_wrapper.go | 17 +++++++++-------- exchanges/okx/okx_wrapper.go | 17 +++++++++-------- exchanges/poloniex/poloniex_wrapper.go | 17 +++++++++-------- exchanges/stream/websocket.go | 5 +++-- exchanges/stream/websocket_types.go | 4 +--- exchanges/zb/zb_wrapper.go | 15 ++++++++------- 26 files changed, 200 insertions(+), 172 deletions(-) diff --git a/config/config.go b/config/config.go index 33849ca7..e5b7f661 100644 --- a/config/config.go +++ b/config/config.go @@ -1821,5 +1821,10 @@ func (c *Exchange) Validate() error { if c == nil { return errExchangeConfigIsNil } + + if c.ConnectionMonitorDelay <= 0 { + c.ConnectionMonitorDelay = DefaultConnectionMonitorDelay + } + return nil } diff --git a/config/config_types.go b/config/config_types.go index 74f71c0e..88e0f4a5 100644 --- a/config/config_types.go +++ b/config/config_types.go @@ -30,6 +30,7 @@ const ( defaultWebsocketResponseMaxLimit = time.Second * 7 defaultWebsocketOrderbookBufferLimit = 5 defaultWebsocketTrafficTimeout = time.Second * 30 + DefaultConnectionMonitorDelay = time.Second * 2 maxAuthFailures = 3 defaultNTPAllowedDifference = 50000000 defaultNTPAllowedNegativeDifference = 50000000 @@ -149,6 +150,7 @@ type Exchange struct { WebsocketResponseCheckTimeout time.Duration `json:"websocketResponseCheckTimeout"` WebsocketResponseMaxLimit time.Duration `json:"websocketResponseMaxLimit"` WebsocketTrafficTimeout time.Duration `json:"websocketTrafficTimeout"` + ConnectionMonitorDelay time.Duration `json:"connectionMonitorDelay"` ProxyAddress string `json:"proxyAddress,omitempty"` BaseCurrencies currency.Currencies `json:"baseCurrencies"` CurrencyPairs *currency.PairsManager `json:"currencyPairs"` diff --git a/exchanges/binance/binance_wrapper.go b/exchanges/binance/binance_wrapper.go index 05b4b4d1..f974d553 100644 --- a/exchanges/binance/binance_wrapper.go +++ b/exchanges/binance/binance_wrapper.go @@ -231,14 +231,15 @@ func (b *Binance) Setup(exch *config.Exchange) error { return err } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: binanceDefaultWebsocketURL, - RunningURL: ePoint, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.GenerateSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: binanceDefaultWebsocketURL, + RunningURL: ePoint, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.GenerateSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/binanceus/binanceus_wrapper.go b/exchanges/binanceus/binanceus_wrapper.go index a2fd5922..26ef9ecd 100644 --- a/exchanges/binanceus/binanceus_wrapper.go +++ b/exchanges/binanceus/binanceus_wrapper.go @@ -189,14 +189,15 @@ func (bi *Binanceus) Setup(exch *config.Exchange) error { } err = bi.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: binanceusDefaultWebsocketURL, - RunningURL: ePoint, - Connector: bi.WsConnect, - Subscriber: bi.Subscribe, - Unsubscriber: bi.Unsubscribe, - GenerateSubscriptions: bi.GenerateSubscriptions, - Features: &bi.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: binanceusDefaultWebsocketURL, + RunningURL: ePoint, + Connector: bi.WsConnect, + Subscriber: bi.Subscribe, + Unsubscriber: bi.Unsubscribe, + GenerateSubscriptions: bi.GenerateSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &bi.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/bitfinex/bitfinex_wrapper.go b/exchanges/bitfinex/bitfinex_wrapper.go index a9994916..82b39131 100644 --- a/exchanges/bitfinex/bitfinex_wrapper.go +++ b/exchanges/bitfinex/bitfinex_wrapper.go @@ -206,14 +206,15 @@ func (b *Bitfinex) Setup(exch *config.Exchange) error { } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: publicBitfinexWebsocketEndpoint, - RunningURL: wsEndpoint, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.GenerateDefaultSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: publicBitfinexWebsocketEndpoint, + RunningURL: wsEndpoint, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ UpdateEntriesByID: true, }, diff --git a/exchanges/bithumb/bithumb_wrapper.go b/exchanges/bithumb/bithumb_wrapper.go index 0802feee..1fd02699 100644 --- a/exchanges/bithumb/bithumb_wrapper.go +++ b/exchanges/bithumb/bithumb_wrapper.go @@ -174,13 +174,14 @@ func (b *Bithumb) Setup(exch *config.Exchange) error { return err } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: wsEndpoint, - RunningURL: ePoint, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - GenerateSubscriptions: b.GenerateSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: wsEndpoint, + RunningURL: ePoint, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + GenerateSubscriptions: b.GenerateSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/bitmex/bitmex_wrapper.go b/exchanges/bitmex/bitmex_wrapper.go index 9c8c0b16..9350880c 100644 --- a/exchanges/bitmex/bitmex_wrapper.go +++ b/exchanges/bitmex/bitmex_wrapper.go @@ -183,14 +183,15 @@ func (b *Bitmex) Setup(exch *config.Exchange) error { } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: bitmexWSURL, - RunningURL: wsEndpoint, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.GenerateDefaultSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: bitmexWSURL, + RunningURL: wsEndpoint, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ UpdateEntriesByID: true, }, diff --git a/exchanges/bitstamp/bitstamp_wrapper.go b/exchanges/bitstamp/bitstamp_wrapper.go index 2910921a..e750ac58 100644 --- a/exchanges/bitstamp/bitstamp_wrapper.go +++ b/exchanges/bitstamp/bitstamp_wrapper.go @@ -170,14 +170,15 @@ func (b *Bitstamp) Setup(exch *config.Exchange) error { } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: bitstampWSURL, - RunningURL: wsURL, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.generateDefaultSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: bitstampWSURL, + RunningURL: wsURL, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.generateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/bittrex/bittrex_wrapper.go b/exchanges/bittrex/bittrex_wrapper.go index 685ba6e6..1bb893ef 100644 --- a/exchanges/bittrex/bittrex_wrapper.go +++ b/exchanges/bittrex/bittrex_wrapper.go @@ -166,14 +166,15 @@ func (b *Bittrex) Setup(exch *config.Exchange) error { // Websocket details setup below err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: bittrexAPIWSURL, // Default ws endpoint so we can roll back via CLI if needed. - RunningURL: wsRunningEndpoint, - Connector: b.WsConnect, // Connector function outlined above. - Subscriber: b.Subscribe, // Subscriber function outlined above. - Unsubscriber: b.Unsubscribe, // Unsubscriber function outlined above. - GenerateSubscriptions: b.GenerateDefaultSubscriptions, // GenerateDefaultSubscriptions function outlined above. - Features: &b.Features.Supports.WebsocketCapabilities, // Defines the capabilities of the websocket outlined in supported features struct. This allows the websocket connection to be flushed appropriately if we have a pair/asset enable/disable change. This is outlined below. + ExchangeConfig: exch, + DefaultURL: bittrexAPIWSURL, // Default ws endpoint so we can roll back via CLI if needed. + RunningURL: wsRunningEndpoint, + Connector: b.WsConnect, // Connector function outlined above. + Subscriber: b.Subscribe, // Subscriber function outlined above. + Unsubscriber: b.Unsubscribe, // Unsubscriber function outlined above. + GenerateSubscriptions: b.GenerateDefaultSubscriptions, // GenerateDefaultSubscriptions function outlined above. + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, // Defines the capabilities of the websocket outlined in supported features struct. This allows the websocket connection to be flushed appropriately if we have a pair/asset enable/disable change. This is outlined below. OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/btcmarkets/btcmarkets_wrapper.go b/exchanges/btcmarkets/btcmarkets_wrapper.go index 7f2b52ed..5e67135c 100644 --- a/exchanges/btcmarkets/btcmarkets_wrapper.go +++ b/exchanges/btcmarkets/btcmarkets_wrapper.go @@ -176,14 +176,15 @@ func (b *BTCMarkets) Setup(exch *config.Exchange) error { } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: btcMarketsWSURL, - RunningURL: wsURL, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.generateDefaultSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: btcMarketsWSURL, + RunningURL: wsURL, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.generateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, UpdateIDProgression: true, diff --git a/exchanges/btse/btse_wrapper.go b/exchanges/btse/btse_wrapper.go index 6d62f15d..28de15aa 100644 --- a/exchanges/btse/btse_wrapper.go +++ b/exchanges/btse/btse_wrapper.go @@ -185,14 +185,15 @@ func (b *BTSE) Setup(exch *config.Exchange) error { } err = b.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: btseWebsocket, - RunningURL: wsRunningURL, - Connector: b.WsConnect, - Subscriber: b.Subscribe, - Unsubscriber: b.Unsubscribe, - GenerateSubscriptions: b.GenerateDefaultSubscriptions, - Features: &b.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: btseWebsocket, + RunningURL: wsRunningURL, + Connector: b.WsConnect, + Subscriber: b.Subscribe, + Unsubscriber: b.Unsubscribe, + GenerateSubscriptions: b.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &b.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/bybit/bybit_wrapper.go b/exchanges/bybit/bybit_wrapper.go index ef625f40..1eeb8d73 100644 --- a/exchanges/bybit/bybit_wrapper.go +++ b/exchanges/bybit/bybit_wrapper.go @@ -204,15 +204,16 @@ func (by *Bybit) Setup(exch *config.Exchange) error { err = by.Websocket.Setup( &stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: bybitWSBaseURL + wsSpotPublicTopicV2, - RunningURL: wsRunningEndpoint, - RunningURLAuth: bybitWSBaseURL + wsSpotPrivate, - Connector: by.WsConnect, - Subscriber: by.Subscribe, - Unsubscriber: by.Unsubscribe, - GenerateSubscriptions: by.GenerateDefaultSubscriptions, - Features: &by.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: bybitWSBaseURL + wsSpotPublicTopicV2, + RunningURL: wsRunningEndpoint, + RunningURLAuth: bybitWSBaseURL + wsSpotPrivate, + Connector: by.WsConnect, + Subscriber: by.Subscribe, + Unsubscriber: by.Unsubscribe, + GenerateSubscriptions: by.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &by.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/coinbasepro/coinbasepro_wrapper.go b/exchanges/coinbasepro/coinbasepro_wrapper.go index 7b0d9618..b29d00b2 100644 --- a/exchanges/coinbasepro/coinbasepro_wrapper.go +++ b/exchanges/coinbasepro/coinbasepro_wrapper.go @@ -172,14 +172,15 @@ func (c *CoinbasePro) Setup(exch *config.Exchange) error { } err = c.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: coinbaseproWebsocketURL, - RunningURL: wsRunningURL, - Connector: c.WsConnect, - Subscriber: c.Subscribe, - Unsubscriber: c.Unsubscribe, - GenerateSubscriptions: c.GenerateDefaultSubscriptions, - Features: &c.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: coinbaseproWebsocketURL, + RunningURL: wsRunningURL, + Connector: c.WsConnect, + Subscriber: c.Subscribe, + Unsubscriber: c.Unsubscribe, + GenerateSubscriptions: c.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &c.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, }, diff --git a/exchanges/coinut/coinut_wrapper.go b/exchanges/coinut/coinut_wrapper.go index eead0632..c069aad2 100644 --- a/exchanges/coinut/coinut_wrapper.go +++ b/exchanges/coinut/coinut_wrapper.go @@ -155,14 +155,15 @@ func (c *COINUT) Setup(exch *config.Exchange) error { } err = c.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: coinutWebsocketURL, - RunningURL: wsRunningURL, - Connector: c.WsConnect, - Subscriber: c.Subscribe, - Unsubscriber: c.Unsubscribe, - GenerateSubscriptions: c.GenerateDefaultSubscriptions, - Features: &c.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: coinutWebsocketURL, + RunningURL: wsRunningURL, + Connector: c.WsConnect, + Subscriber: c.Subscribe, + Unsubscriber: c.Unsubscribe, + GenerateSubscriptions: c.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &c.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/exchange_test.go b/exchanges/exchange_test.go index 3bac304f..60409917 100644 --- a/exchanges/exchange_test.go +++ b/exchanges/exchange_test.go @@ -1198,6 +1198,7 @@ func TestSetupDefaults(t *testing.T) { API: config.APIConfig{ AuthenticatedSupport: true, }, + ConnectionMonitorDelay: time.Second * 5, } err = b.SetupDefaults(&cfg) diff --git a/exchanges/gateio/gateio_wrapper.go b/exchanges/gateio/gateio_wrapper.go index d24c8777..b5fcd098 100644 --- a/exchanges/gateio/gateio_wrapper.go +++ b/exchanges/gateio/gateio_wrapper.go @@ -172,13 +172,14 @@ func (g *Gateio) Setup(exch *config.Exchange) error { } err = g.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: gateioWebsocketEndpoint, - RunningURL: wsRunningURL, - Connector: g.WsConnect, - Subscriber: g.Subscribe, - GenerateSubscriptions: g.GenerateDefaultSubscriptions, - Features: &g.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: gateioWebsocketEndpoint, + RunningURL: wsRunningURL, + Connector: g.WsConnect, + Subscriber: g.Subscribe, + GenerateSubscriptions: g.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &g.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/gemini/gemini_wrapper.go b/exchanges/gemini/gemini_wrapper.go index fac2101d..e2637c0b 100644 --- a/exchanges/gemini/gemini_wrapper.go +++ b/exchanges/gemini/gemini_wrapper.go @@ -160,14 +160,15 @@ func (g *Gemini) Setup(exch *config.Exchange) error { } err = g.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: geminiWebsocketEndpoint, - RunningURL: wsRunningURL, - Connector: g.WsConnect, - Subscriber: g.Subscribe, - Unsubscriber: g.Unsubscribe, - GenerateSubscriptions: g.GenerateDefaultSubscriptions, - Features: &g.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: geminiWebsocketEndpoint, + RunningURL: wsRunningURL, + Connector: g.WsConnect, + Subscriber: g.Subscribe, + Unsubscriber: g.Unsubscribe, + GenerateSubscriptions: g.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &g.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/hitbtc/hitbtc_wrapper.go b/exchanges/hitbtc/hitbtc_wrapper.go index b6f019ca..d3895c0d 100644 --- a/exchanges/hitbtc/hitbtc_wrapper.go +++ b/exchanges/hitbtc/hitbtc_wrapper.go @@ -173,14 +173,15 @@ func (h *HitBTC) Setup(exch *config.Exchange) error { } err = h.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: hitbtcWebsocketAddress, - RunningURL: wsRunningURL, - Connector: h.WsConnect, - Subscriber: h.Subscribe, - Unsubscriber: h.Unsubscribe, - GenerateSubscriptions: h.GenerateDefaultSubscriptions, - Features: &h.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: hitbtcWebsocketAddress, + RunningURL: wsRunningURL, + Connector: h.WsConnect, + Subscriber: h.Subscribe, + Unsubscriber: h.Unsubscribe, + GenerateSubscriptions: h.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &h.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/huobi/huobi_wrapper.go b/exchanges/huobi/huobi_wrapper.go index cca6213a..cf2890cd 100644 --- a/exchanges/huobi/huobi_wrapper.go +++ b/exchanges/huobi/huobi_wrapper.go @@ -204,14 +204,15 @@ func (h *HUOBI) Setup(exch *config.Exchange) error { } err = h.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: wsMarketURL, - RunningURL: wsRunningURL, - Connector: h.WsConnect, - Subscriber: h.Subscribe, - Unsubscriber: h.Unsubscribe, - GenerateSubscriptions: h.GenerateDefaultSubscriptions, - Features: &h.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: wsMarketURL, + RunningURL: wsRunningURL, + Connector: h.WsConnect, + Subscriber: h.Subscribe, + Unsubscriber: h.Unsubscribe, + GenerateSubscriptions: h.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &h.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/kraken/kraken_wrapper.go b/exchanges/kraken/kraken_wrapper.go index 1b579624..b97cb428 100644 --- a/exchanges/kraken/kraken_wrapper.go +++ b/exchanges/kraken/kraken_wrapper.go @@ -219,15 +219,16 @@ func (k *Kraken) Setup(exch *config.Exchange) error { return err } err = k.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: krakenWSURL, - RunningURL: wsRunningURL, - Connector: k.WsConnect, - Subscriber: k.Subscribe, - Unsubscriber: k.Unsubscribe, - GenerateSubscriptions: k.GenerateDefaultSubscriptions, - Features: &k.Features.Supports.WebsocketCapabilities, - OrderbookBufferConfig: buffer.Config{SortBuffer: true}, + ExchangeConfig: exch, + DefaultURL: krakenWSURL, + RunningURL: wsRunningURL, + Connector: k.WsConnect, + Subscriber: k.Subscribe, + Unsubscriber: k.Unsubscribe, + GenerateSubscriptions: k.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &k.Features.Supports.WebsocketCapabilities, + OrderbookBufferConfig: buffer.Config{SortBuffer: true}, }) if err != nil { return err diff --git a/exchanges/okcoin/okcoin_wrapper.go b/exchanges/okcoin/okcoin_wrapper.go index 18817d92..1d7a6ed3 100644 --- a/exchanges/okcoin/okcoin_wrapper.go +++ b/exchanges/okcoin/okcoin_wrapper.go @@ -180,14 +180,15 @@ func (o *OKCoin) Setup(exch *config.Exchange) error { return err } err = o.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: wsEndpoint, - RunningURL: wsEndpoint, - Connector: o.WsConnect, - Subscriber: o.Subscribe, - Unsubscriber: o.Unsubscribe, - GenerateSubscriptions: o.GenerateDefaultSubscriptions, - Features: &o.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: wsEndpoint, + RunningURL: wsEndpoint, + Connector: o.WsConnect, + Subscriber: o.Subscribe, + Unsubscriber: o.Unsubscribe, + GenerateSubscriptions: o.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &o.Features.Supports.WebsocketCapabilities, }) if err != nil { return err diff --git a/exchanges/okx/okx_wrapper.go b/exchanges/okx/okx_wrapper.go index 8ce08819..038ebb82 100644 --- a/exchanges/okx/okx_wrapper.go +++ b/exchanges/okx/okx_wrapper.go @@ -197,14 +197,15 @@ func (ok *Okx) Setup(exch *config.Exchange) error { return err } err = ok.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: okxAPIWebsocketPublicURL, - RunningURL: wsRunningEndpoint, - Connector: ok.WsConnect, - Subscriber: ok.Subscribe, - Unsubscriber: ok.Unsubscribe, - GenerateSubscriptions: ok.GenerateDefaultSubscriptions, - Features: &ok.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: okxAPIWebsocketPublicURL, + RunningURL: wsRunningEndpoint, + Connector: ok.WsConnect, + Subscriber: ok.Subscribe, + Unsubscriber: ok.Unsubscribe, + GenerateSubscriptions: ok.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &ok.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ Checksum: ok.CalculateUpdateOrderbookChecksum, }, diff --git a/exchanges/poloniex/poloniex_wrapper.go b/exchanges/poloniex/poloniex_wrapper.go index 3b988828..91623f77 100644 --- a/exchanges/poloniex/poloniex_wrapper.go +++ b/exchanges/poloniex/poloniex_wrapper.go @@ -184,14 +184,15 @@ func (p *Poloniex) Setup(exch *config.Exchange) error { } err = p.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: poloniexWebsocketAddress, - RunningURL: wsRunningURL, - Connector: p.WsConnect, - Subscriber: p.Subscribe, - Unsubscriber: p.Unsubscribe, - GenerateSubscriptions: p.GenerateDefaultSubscriptions, - Features: &p.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: poloniexWebsocketAddress, + RunningURL: wsRunningURL, + Connector: p.WsConnect, + Subscriber: p.Subscribe, + Unsubscriber: p.Unsubscribe, + GenerateSubscriptions: p.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Features: &p.Features.Supports.WebsocketCapabilities, OrderbookBufferConfig: buffer.Config{ SortBuffer: true, SortBufferByUpdateIDs: true, diff --git a/exchanges/stream/websocket.go b/exchanges/stream/websocket.go index 8a0f4c78..245e6b4e 100644 --- a/exchanges/stream/websocket.go +++ b/exchanges/stream/websocket.go @@ -115,8 +115,9 @@ func (w *Websocket) Setup(s *WebsocketSetup) error { if w.features.Unsubscribe && s.Unsubscriber == nil { return fmt.Errorf("%s %w", w.exchangeName, errWebsocketUnsubscriberUnset) } - if s.ConnectionMonitorDelay <= 0 { - w.connectionMonitorDelay = defaultConnectionMonitorDelay + w.connectionMonitorDelay = s.ConnectionMonitorDelay + if w.connectionMonitorDelay <= 0 { + w.connectionMonitorDelay = config.DefaultConnectionMonitorDelay } w.Unsubscriber = s.Unsubscriber diff --git a/exchanges/stream/websocket_types.go b/exchanges/stream/websocket_types.go index 41444f1a..8bf2e811 100644 --- a/exchanges/stream/websocket_types.go +++ b/exchanges/stream/websocket_types.go @@ -15,9 +15,7 @@ import ( // Websocket functionality list and state consts const ( // WebsocketNotEnabled alerts of a disabled websocket - WebsocketNotEnabled = "exchange_websocket_not_enabled" - // defaultConnectionMonitorDelay connection monitor time delays and limits - defaultConnectionMonitorDelay = 2 * time.Second + WebsocketNotEnabled = "exchange_websocket_not_enabled" WebsocketNotAuthenticatedUsingRest = "%v - Websocket not authenticated, using REST\n" Ping = "ping" Pong = "pong" diff --git a/exchanges/zb/zb_wrapper.go b/exchanges/zb/zb_wrapper.go index 193ffb64..e02f0cff 100644 --- a/exchanges/zb/zb_wrapper.go +++ b/exchanges/zb/zb_wrapper.go @@ -171,13 +171,14 @@ func (z *ZB) Setup(exch *config.Exchange) error { } err = z.Websocket.Setup(&stream.WebsocketSetup{ - ExchangeConfig: exch, - DefaultURL: zbWebsocketAPI, - RunningURL: wsRunningURL, - Connector: z.WsConnect, - GenerateSubscriptions: z.GenerateDefaultSubscriptions, - Subscriber: z.Subscribe, - Features: &z.Features.Supports.WebsocketCapabilities, + ExchangeConfig: exch, + DefaultURL: zbWebsocketAPI, + RunningURL: wsRunningURL, + Connector: z.WsConnect, + GenerateSubscriptions: z.GenerateDefaultSubscriptions, + ConnectionMonitorDelay: exch.ConnectionMonitorDelay, + Subscriber: z.Subscribe, + Features: &z.Features.Supports.WebsocketCapabilities, }) if err != nil { return err