diff --git a/setup.py b/setup.py index 639cb7d..b42b4a3 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ CHANGES = open(os.path.join(here, 'CHANGES.rst')).read() setup( name='socketIO-client', - version='0.5.3', + version='0.5.3.2', description='A socket.io client library', long_description=README + '\n\n' + CHANGES, license='MIT', diff --git a/socketIO_client/__init__.py b/socketIO_client/__init__.py index 1bccef5..8330a0a 100644 --- a/socketIO_client/__init__.py +++ b/socketIO_client/__init__.py @@ -3,7 +3,10 @@ import json import requests import time from collections import namedtuple -from urlparse import urlparse +try: + from urllib import parse as parse_url +except ImportError: + from urlparse import urlparse as parse_url from .exceptions import ConnectionError, TimeoutError, PacketError from .transports import _get_response, _negotiate_transport, TRANSPORTS @@ -167,9 +170,9 @@ class SocketIO(object): - Omit seconds, i.e. call wait() without arguments, to wait forever. """ - try: - warning_screen = _yield_warning_screen(seconds) - for elapsed_time in warning_screen: + warning_screen = _yield_warning_screen(seconds) + for elapsed_time in warning_screen: + try: if self._stop_waiting(for_callbacks): break try: @@ -185,8 +188,8 @@ class SocketIO(object): except StopIteration: _log.warn(warning) self.disconnect() - except KeyboardInterrupt: - pass + except KeyboardInterrupt: + pass def _process_events(self): for packet in self._transport.recv_packet(): @@ -254,13 +257,13 @@ class SocketIO(object): # Initialize heartbeat_pacemaker self.heartbeat_pacemaker = self._make_heartbeat_pacemaker( heartbeat_interval=socketIO_session.heartbeat_timeout / 2) - self.heartbeat_pacemaker.next() + next(self.heartbeat_pacemaker) # Negotiate transport transport = _negotiate_transport( self.client_supported_transports, socketIO_session, self.is_secure, self.base_url, **self.kw) # Update namespaces - for path, namespace in self._namespace_by_path.iteritems(): + for path, namespace in self._namespace_by_path.items(): namespace._transport = transport transport.connect(path) return transport @@ -364,7 +367,7 @@ def find_callback(args, kw=None): def _parse_host(host, port): if not host.startswith('http'): host = 'http://' + host - url_pack = urlparse(host) + url_pack = parse_url(host) is_secure = url_pack.scheme == 'https' port = port or url_pack.port or (443 if is_secure else 80) base_url = '%s:%d%s/socket.io/%s' % ( diff --git a/socketIO_client/transports.py b/socketIO_client/transports.py index ed4e59c..172ca15 100644 --- a/socketIO_client/transports.py +++ b/socketIO_client/transports.py @@ -6,7 +6,6 @@ import six import socket import time import websocket -from itertools import izip from .exceptions import SocketIOError, ConnectionError, TimeoutError @@ -151,7 +150,10 @@ class _WebsocketTransport(_AbstractTransport): except websocket.WebSocketTimeoutException as e: raise TimeoutError(e) except websocket.SSLError as e: - raise ConnectionError(e) + if 'timed out' in e.message: + raise TimeoutError(e) + else: + raise ConnectionError(e) except websocket.WebSocketConnectionClosedException as e: raise ConnectionError('connection closed (%s)' % e) except socket.error as e: @@ -295,7 +297,7 @@ def _negotiate_transport( def _yield_text_from_framed_data(framed_data, parse=lambda x: x): parts = [parse(x) for x in framed_data.split(BOUNDARY)] - for text_length, text in izip(parts[1::2], parts[2::2]): + for text_length, text in zip(parts[1::2], parts[2::2]): if text_length != str(len(text)): warning = 'invalid declared length=%s for packet_text=%s' % ( text_length, text)