From 0c8dda1316f8c4c0ee6de6f8f2e208e59b887f4d Mon Sep 17 00:00:00 2001 From: Roy Hyunjin Han Date: Sun, 15 Feb 2015 11:18:57 -0500 Subject: [PATCH] Ensure that recv timeout is less than heartbeat timeout #34 --- socketIO_client/__init__.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/socketIO_client/__init__.py b/socketIO_client/__init__.py index 899cc32..501d09d 100644 --- a/socketIO_client/__init__.py +++ b/socketIO_client/__init__.py @@ -238,19 +238,19 @@ class SocketIO(object): def wait(self, seconds=None, for_callbacks=False): """Wait in a loop and process events as defined in the namespaces. - - - Omit seconds, i.e. call wait() without arguments, to wait forever. + Omit seconds, i.e. call wait() without arguments, to wait forever. """ warning_screen = _yield_warning_screen(seconds) + timeout = min(self._heartbeat_interval, seconds) for elapsed_time in warning_screen: if self._stop_waiting(for_callbacks): break try: try: - self._process_events(timeout=seconds) + self._process_events(timeout) except TimeoutError: pass - self.heartbeat_pacemaker.next() + next(self.heartbeat_pacemaker) except ConnectionError as e: try: warning = Exception('[connection error] %s' % e) @@ -330,8 +330,9 @@ class SocketIO(object): self.log(logging.DEBUG, '[transports available] %s', ' '.join( socketIO_session.server_supported_transports)) # Initialize heartbeat_pacemaker + self._heartbeat_interval = socketIO_session.heartbeat_timeout / 2 self.heartbeat_pacemaker = self._make_heartbeat_pacemaker( - heartbeat_interval=socketIO_session.heartbeat_timeout / 2) + heartbeat_interval=self._heartbeat_interval) next(self.heartbeat_pacemaker) # Negotiate transport transport = _negotiate_transport(