async def process(self, msg):
    ' Process message that received from websocket.\n\n        Args:\n            msg: message received from websocket.\n\n        Returns:\n            None.\n        '
    if (not isinstance(msg, dict)):
        return
    logger.debug('msg:', json.dumps(msg), caller=self)
    if (msg.get('type') == 'pong'):
        return
    elif (msg['type'] == 'error'):
        state = State(self._platform, self._account, 'Websocket connection failed: {}'.format(msg), State.STATE_CODE_GENERAL_ERROR)
        logger.error(state, caller=self)
        SingleTask.run(self.cb.on_state_update_callback, state)
    elif (msg['type'] == 'info'):
        if (msg['code'] == 20001):

            @async_method_locker('FTXMarket._ws_close.locker')
            async def _ws_close():
                (await self.socket_close())
            SingleTask.run(_ws_close)
    elif (msg['type'] == 'unsubscribed'):
        return
    elif (msg['type'] == 'subscribed'):
        return
    elif ((msg['type'] == 'update') or (msg['type'] == 'partial')):
        channel = msg['channel']
        if (channel == 'orderbook'):
            self._update_orderbook(msg)
        elif (channel == 'trades'):
            self._update_trades(msg)
        elif (channel == 'ticker'):
            self._update_ticker(msg)
Process message that received from websocket.

Args:
    msg: message received from websocket.

Returns:
    None.
async def process(self, msg):
    ' Process message that received from websocket.\n\n        Args:\n            msg: message received from websocket.\n\n        Returns:\n            None.\n        '
    if (not isinstance(msg, dict)):
        return
    logger.debug('msg:', json.dumps(msg), caller=self)
    if (msg.get('type') == 'pong'):
        return
    elif (msg['type'] == 'error'):
        state = State(self._platform, self._account, 'Websocket connection failed: {}'.format(msg), State.STATE_CODE_GENERAL_ERROR)
        logger.error(state, caller=self)
        SingleTask.run(self.cb.on_state_update_callback, state)
    elif (msg['type'] == 'info'):
        if (msg['code'] == 20001):

            @async_method_locker('FTXMarket._ws_close.locker')
            async def _ws_close():
                (await self.socket_close())
            SingleTask.run(_ws_close)
    elif (msg['type'] == 'unsubscribed'):
        return
    elif (msg['type'] == 'subscribed'):
        return
    elif ((msg['type'] == 'update') or (msg['type'] == 'partial')):
        channel = msg['channel']
        if (channel == 'orderbook'):
            self._update_orderbook(msg)
        elif (channel == 'trades'):
            self._update_trades(msg)
        elif (channel == 'ticker'):
            self._update_ticker(msg)