MCPcopy Create free account
hub / github.com/ccxt/ccxt / handle_message

Method handle_message

python/ccxt/pro/binance.py:4341–4413  ·  view source on GitHub ↗
(self, client: Client, message)

Source from the content-addressed store, hash-verified

4339 client.reject(message, accountType)
4340
4341 def handle_message(self, client: Client, message):
4342 # handle WebSocketAPI
4343 eventMsg = self.safe_dict(message, 'event')
4344 if eventMsg is not None:
4345 message = eventMsg
4346 status = self.safe_string(message, 'status')
4347 error = self.safe_value(message, 'error')
4348 if (error is not None) or (status is not None and status != '200'):
4349 self.handle_ws_error(client, message)
4350 return
4351 # user subscription wraps message in subscriptionId and event
4352 id = self.safe_string(message, 'id')
4353 subscriptions = self.safe_value(client.subscriptions, id)
4354 method = self.safe_value(subscriptions, 'method')
4355 if method is not None:
4356 method(client, message)
4357 return
4358 # handle other APIs
4359 methods = {
4360 'depthUpdate': self.handle_order_book,
4361 'trade': self.handle_trade,
4362 'aggTrade': self.handle_trade,
4363 'kline': self.handle_ohlcv,
4364 'markPrice_kline': self.handle_ohlcv,
4365 'indexPrice_kline': self.handle_ohlcv,
4366 '1hTicker@arr': self.handle_tickers,
4367 '4hTicker@arr': self.handle_tickers,
4368 '1dTicker@arr': self.handle_tickers,
4369 '24hrTicker@arr': self.handle_tickers,
4370 '24hrMiniTicker@arr': self.handle_tickers,
4371 '1hTicker': self.handle_tickers,
4372 '4hTicker': self.handle_tickers,
4373 '1dTicker': self.handle_tickers,
4374 '24hrTicker': self.handle_tickers,
4375 '24hrMiniTicker': self.handle_tickers,
4376 'markPriceUpdate': self.handle_mark_prices,
4377 'markPriceUpdate@arr': self.handle_mark_prices,
4378 'bookTicker': self.handle_bids_asks, # there is no "bookTicker@arr" endpoint
4379 'outboundAccountPosition': self.handle_balance,
4380 'balanceUpdate': self.handle_balance,
4381 'ACCOUNT_UPDATE': self.handle_acount_update,
4382 'executionReport': self.handle_order_update,
4383 'ORDER_TRADE_UPDATE': self.handle_order_update,
4384 'ALGO_UPDATE': self.handle_order_update,
4385 'forceOrder': self.handle_liquidation,
4386 'eventStreamTerminated': self.handle_event_stream_terminated,
4387 'externalLockUpdate': self.handle_balance,
4388 }
4389 event = self.safe_string(message, 'e')
4390 if isinstance(message, list):
4391 data = message[0]
4392 event = self.safe_string(data, 'e') + '@arr'
4393 method = self.safe_value(methods, event)
4394 if method is None:
4395 requestId = self.safe_string(message, 'id')
4396 if requestId is not None:
4397 self.handle_subscription_status(client, message)
4398 return

Callers

nothing calls this directly

Calls 6

handle_ws_errorMethod · 0.95
handle_bids_asksMethod · 0.95
safe_dictMethod · 0.80
safe_stringMethod · 0.80
safe_valueMethod · 0.80

Tested by

no test coverage detected