Merge pull request from drewhutchinson

This commit is contained in:
Roy Hyunjin Han 2015-01-09 20:02:52 +09:00
commit d73d6145f3
3 changed files with 18 additions and 13 deletions

View file

@ -9,7 +9,7 @@ CHANGES = open(os.path.join(here, 'CHANGES.rst')).read()
setup( setup(
name='socketIO-client', name='socketIO-client',
version='0.5.3', version='0.5.3.2',
description='A socket.io client library', description='A socket.io client library',
long_description=README + '\n\n' + CHANGES, long_description=README + '\n\n' + CHANGES,
license='MIT', license='MIT',

View file

@ -3,7 +3,10 @@ import json
import requests import requests
import time import time
from collections import namedtuple 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 .exceptions import ConnectionError, TimeoutError, PacketError
from .transports import _get_response, _negotiate_transport, TRANSPORTS 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. - Omit seconds, i.e. call wait() without arguments, to wait forever.
""" """
try: warning_screen = _yield_warning_screen(seconds)
warning_screen = _yield_warning_screen(seconds) for elapsed_time in warning_screen:
for elapsed_time in warning_screen: try:
if self._stop_waiting(for_callbacks): if self._stop_waiting(for_callbacks):
break break
try: try:
@ -185,8 +188,8 @@ class SocketIO(object):
except StopIteration: except StopIteration:
_log.warn(warning) _log.warn(warning)
self.disconnect() self.disconnect()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
def _process_events(self): def _process_events(self):
for packet in self._transport.recv_packet(): for packet in self._transport.recv_packet():
@ -254,13 +257,13 @@ class SocketIO(object):
# Initialize heartbeat_pacemaker # Initialize heartbeat_pacemaker
self.heartbeat_pacemaker = self._make_heartbeat_pacemaker( self.heartbeat_pacemaker = self._make_heartbeat_pacemaker(
heartbeat_interval=socketIO_session.heartbeat_timeout / 2) heartbeat_interval=socketIO_session.heartbeat_timeout / 2)
self.heartbeat_pacemaker.next() next(self.heartbeat_pacemaker)
# Negotiate transport # Negotiate transport
transport = _negotiate_transport( transport = _negotiate_transport(
self.client_supported_transports, socketIO_session, self.client_supported_transports, socketIO_session,
self.is_secure, self.base_url, **self.kw) self.is_secure, self.base_url, **self.kw)
# Update namespaces # Update namespaces
for path, namespace in self._namespace_by_path.iteritems(): for path, namespace in self._namespace_by_path.items():
namespace._transport = transport namespace._transport = transport
transport.connect(path) transport.connect(path)
return transport return transport
@ -364,7 +367,7 @@ def find_callback(args, kw=None):
def _parse_host(host, port): def _parse_host(host, port):
if not host.startswith('http'): if not host.startswith('http'):
host = 'http://' + host host = 'http://' + host
url_pack = urlparse(host) url_pack = parse_url(host)
is_secure = url_pack.scheme == 'https' is_secure = url_pack.scheme == 'https'
port = port or url_pack.port or (443 if is_secure else 80) port = port or url_pack.port or (443 if is_secure else 80)
base_url = '%s:%d%s/socket.io/%s' % ( base_url = '%s:%d%s/socket.io/%s' % (

View file

@ -6,7 +6,6 @@ import six
import socket import socket
import time import time
import websocket import websocket
from itertools import izip
from .exceptions import SocketIOError, ConnectionError, TimeoutError from .exceptions import SocketIOError, ConnectionError, TimeoutError
@ -151,7 +150,10 @@ class _WebsocketTransport(_AbstractTransport):
except websocket.WebSocketTimeoutException as e: except websocket.WebSocketTimeoutException as e:
raise TimeoutError(e) raise TimeoutError(e)
except websocket.SSLError as 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: except websocket.WebSocketConnectionClosedException as e:
raise ConnectionError('connection closed (%s)' % e) raise ConnectionError('connection closed (%s)' % e)
except socket.error as 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): def _yield_text_from_framed_data(framed_data, parse=lambda x: x):
parts = [parse(x) for x in framed_data.split(BOUNDARY)] 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)): if text_length != str(len(text)):
warning = 'invalid declared length=%s for packet_text=%s' % ( warning = 'invalid declared length=%s for packet_text=%s' % (
text_length, text) text_length, text)