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['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'] == 'pong'):
        return
    elif (msg['type'] == 'info'):
        if (msg['code'] == 20001):

            @async_method_locker('FTXTrader._ws_close.locker')
            async def _ws_close():
                (await self.socket_close())
            SingleTask.run(_ws_close)
    elif (msg['type'] == 'unsubscribed'):
        return
    elif (msg['type'] == 'subscribed'):
        self._subscribe_response_count = (self._subscribe_response_count + 1)
        if (self._subscribe_response_count == 2):
            state = State(self._platform, self._account, 'Environment ready', State.STATE_CODE_READY)
            SingleTask.run(self.cb.on_state_update_callback, state)
    elif (msg['type'] == 'update'):
        channel = msg['channel']
        if (channel == 'orders'):
            self._update_order(msg)
        elif (channel == 'fills'):
            self._update_fill(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['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'] == 'pong'):
        return
    elif (msg['type'] == 'info'):
        if (msg['code'] == 20001):

            @async_method_locker('FTXTrader._ws_close.locker')
            async def _ws_close():
                (await self.socket_close())
            SingleTask.run(_ws_close)
    elif (msg['type'] == 'unsubscribed'):
        return
    elif (msg['type'] == 'subscribed'):
        self._subscribe_response_count = (self._subscribe_response_count + 1)
        if (self._subscribe_response_count == 2):
            state = State(self._platform, self._account, 'Environment ready', State.STATE_CODE_READY)
            SingleTask.run(self.cb.on_state_update_callback, state)
    elif (msg['type'] == 'update'):
        channel = msg['channel']
        if (channel == 'orders'):
            self._update_order(msg)
        elif (channel == 'fills'):
            self._update_fill(msg)