code: def on_connected(self, headers, body):
          
          if 'heart-beat' in headers:
              self.heartbeats = utils.calculate_heartbeats(
                  headers['heart-beat'].replace(' ', '').split(','), self.heartbeats)
              if self.heartbeats != (0, 0):
                  self.send_sleep = self.heartbeats[0] / 1000
  
                  # by default, receive gets an additional grace of 50%
                  # set a different heart-beat-receive-scale when creating the connection to override that
                  self.receive_sleep = (self.heartbeats[1] / 1000) * self.heart_beat_receive_scale
                  log.debug("Setting receive_sleep to %s", self.receive_sleep)
  
                  # Give grace of receiving the first heartbeat
                  self.received_heartbeat = monotonic() + self.receive_sleep
  
                  self.running = True
                  if self.heartbeat_thread is None:
                      self.heartbeat_thread = utils.default_create_thread(
                          self.__heartbeat_loop)
                      self.heartbeat_thread.name = "StompHeartbeat%s" % \
                          getattr(self.heartbeat_thread, "name", "Thread")
docs: Once the connection is established, and 'heart-beat' is found in the headers, we calculate the real
          heartbeat numbers (based on what the server sent and what was specified by the client) - if the heartbeats
          are not 0, we start up the heartbeat loop accordingly.
  
          :param dict headers: headers in the connection message
          :param body: the message body