@@ -135,6 +135,9 @@ class BfxWebsocket(GenericWebsocket):
135135 - `funding_credit_snapshot` (array): opening funding credit balances
136136 - `balance_update` (array): when the state of a balance is changed
137137 - `new_trade` (array): a new trade on the market has been executed
138+ - `new_ticker` (Ticker|FundingTicker): a new ticker update has been published
139+ - `new_funding_ticker` (FundingTicker): a new funding ticker update has been published
140+ - `new_trading_ticker` (Ticker): a new trading ticker update has been published
138141 - `trade_update` (array): a trade on the market has been updated
139142 - `new_candle` (array): a new candle has been produced
140143 - `margin_info_updates` (array): new margin information has been broadcasted
@@ -212,14 +215,16 @@ async def _ws_data_handler(self, socketId, data, raw_message_str):
212215 # candles do not have an event
213216 if subscription .channel_name == 'candles' :
214217 await self ._candle_handler (data )
215- if subscription .channel_name == 'book' :
218+ elif subscription .channel_name == 'book' :
216219 await self ._order_book_handler (data , raw_message_str )
217- if subscription .channel_name == 'trades' :
220+ elif subscription .channel_name == 'trades' :
218221 await self ._trade_handler (data )
219- if subscription .channel_name == 'status' :
222+ elif subscription .channel_name == 'status' :
220223 await self ._status_handler (data )
221- if subscription .channel_name == 'ticker' :
224+ elif subscription .channel_name == 'ticker' :
222225 await self ._ticker_handler (data )
226+ else :
227+ self .logger .warn ("Unknown channel type '{}'" .format (subscription .channel_name ))
223228 else :
224229 self .logger .warn (
225230 "Unknown data event: '{}' {}" .format (dataEvent , data ))
@@ -360,13 +365,17 @@ async def _status_handler(self, data):
360365
361366 async def _ticker_handler (self , data ):
362367 symbol = self .subscriptionManager .get (data [0 ]).symbol
363- if type (data [1 ]) is list :
368+ if type (data [1 ]) is list and len ( symbol ) > 0 :
364369 raw_ticker = data [1 ]
365370 t = None
366- if len ( raw_ticker ) == 10 :
371+ if symbol [ 0 ] == 't' :
367372 t = Ticker .from_raw_ticker (raw_ticker , symbol )
368- else :
373+ self ._emit ('new_trading_ticker' , t )
374+ elif symbol [0 ] == 'f' :
369375 t = FundingTicker .from_raw_ticker (raw_ticker , symbol )
376+ self ._emit ('new_funding_ticker' , t )
377+ else :
378+ self .logger .warn ('Unknown ticker type: {}' .format (raw_ticker ))
370379 self ._emit ('new_ticker' , t )
371380
372381 async def _trade_handler (self , data ):
0 commit comments