def on_connected(self, headers, body): """ 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 """ 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")
def on_connected(self, headers, body): """ 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. """ self.received_heartbeat = time.time() if 'heart-beat' in headers.keys(): self.heartbeats = utils.calculate_heartbeats(headers['heart-beat'].replace(' ', '').split(','), self.heartbeats) if self.heartbeats != (0,0): self.send_sleep = self.heartbeats[0] / 1000 # receive gets an additional threshold of 2 additional seconds self.receive_sleep = (self.heartbeats[1] / 1000) + 2 if self.send_sleep == 0: self.sleep_time = self.receive_sleep elif self.receive_sleep == 0: self.sleep_time = self.send_sleep else: # sleep is the GCD of the send and receive times self.sleep_time = gcd(self.send_sleep, self.receive_sleep) / 2.0 self.running = True if self.heartbeat_thread is None: self.heartbeat_thread = utils.default_create_thread(self.__heartbeat_loop)
def on_connected(self, headers, body): """ 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 headers: headers in the connection message :param body: the message 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 # receive gets an additional grace of 50% self.receive_sleep = (self.heartbeats[1] / 1000) * 1.5 # Setup an initial grace period if self.receive_sleep != 0: self.received_heartbeat = monotonic() + \ 2 * self.receive_sleep if self.send_sleep == 0: self.sleep_time = self.receive_sleep elif self.receive_sleep == 0: self.sleep_time = self.send_sleep else: # sleep is the GCD of the send and receive times self.sleep_time = gcd(self.send_sleep, self.receive_sleep) / 2.0 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")