code: def _on_message(self, socket, message):
          
          data = json.loads(message)
          message_type = None
          identifier = None
          subscription = None
  
          if 'type' in data:
              message_type = data['type']
  
          if 'identifier' in data:
              identifier = json.loads(data['identifier'])
  
          if identifier is not None:
              subscription = self.find_subscription(identifier)
  
          if subscription is not None:
              subscription.received(data)
          elif message_type == 'welcome':
              self.logger.debug('Welcome message received.')
  
              for subscription in self.subscriptions.values():
                  if subscription.state == 'connection_pending':
                      subscription.create()
  
          elif message_type == 'ping':
              if self.log_ping:
                  self.logger.debug('Ping received.')
          else:
              self.logger.warning('Message not supported. (Message: {})'.format(message))
docs: Called aways when a message arrives.