Merge branch 'leth-patch-2'
This commit is contained in:
commit
6cdf1eb610
2 changed files with 13 additions and 11 deletions
|
|
@ -247,7 +247,7 @@ class SocketIO(object):
|
|||
break
|
||||
try:
|
||||
try:
|
||||
self._process_events()
|
||||
self._process_events(timeout=seconds)
|
||||
except TimeoutError:
|
||||
pass
|
||||
self.heartbeat_pacemaker.next()
|
||||
|
|
@ -259,8 +259,8 @@ class SocketIO(object):
|
|||
self.log(logging.WARNING, warning)
|
||||
self.disconnect()
|
||||
|
||||
def _process_events(self):
|
||||
for packet in self._transport.recv_packet():
|
||||
def _process_events(self, timeout=None):
|
||||
for packet in self._transport.recv_packet(timeout):
|
||||
try:
|
||||
self._process_packet(packet)
|
||||
except PacketError as e:
|
||||
|
|
|
|||
|
|
@ -76,14 +76,14 @@ class _AbstractTransport(object):
|
|||
self.send(packet_text)
|
||||
self._log(logging.DEBUG, '[packet sent] %s', packet_text)
|
||||
|
||||
def recv_packet(self):
|
||||
def recv_packet(self, timeout=None):
|
||||
try:
|
||||
while self._packets:
|
||||
yield self._packets.pop(0)
|
||||
except IndexError:
|
||||
pass
|
||||
for packet_text in self.recv():
|
||||
self._log(logging.DEBUG, '[packet received] %s', packet_text)
|
||||
for packet_text in self.recv(timeout=timeout):
|
||||
_log.debug('[packet received] %s', packet_text)
|
||||
try:
|
||||
packet_parts = packet_text.split(':', 3)
|
||||
except AttributeError:
|
||||
|
|
@ -154,7 +154,9 @@ class _WebsocketTransport(_AbstractTransport):
|
|||
self._log(logging.WARNING, message)
|
||||
raise ConnectionError(message)
|
||||
|
||||
def recv(self):
|
||||
def recv(self, timeout=None):
|
||||
if timeout:
|
||||
self._connection.settimeout(timeout)
|
||||
try:
|
||||
yield self._connection.recv()
|
||||
except websocket.WebSocketTimeoutException as e:
|
||||
|
|
@ -202,12 +204,12 @@ class _XHR_PollingTransport(_AbstractTransport):
|
|||
data=packet_text,
|
||||
timeout=TIMEOUT_IN_SECONDS)
|
||||
|
||||
def recv(self):
|
||||
def recv(self, timeout=None):
|
||||
response = _get_response(
|
||||
self._http_session.get,
|
||||
self._url,
|
||||
params=self._params,
|
||||
timeout=TIMEOUT_IN_SECONDS,
|
||||
timeout=timeout or TIMEOUT_IN_SECONDS,
|
||||
stream=True)
|
||||
response_text = response.text
|
||||
if not response_text.startswith(BOUNDARY):
|
||||
|
|
@ -257,14 +259,14 @@ class _JSONP_PollingTransport(_AbstractTransport):
|
|||
headers={'content-type': 'application/x-www-form-urlencoded'},
|
||||
timeout=TIMEOUT_IN_SECONDS)
|
||||
|
||||
def recv(self):
|
||||
def recv(self, timeout=None):
|
||||
'Decode the JavaScript response so that we can parse it as JSON'
|
||||
response = _get_response(
|
||||
self._http_session.get,
|
||||
self._url,
|
||||
params=self._params,
|
||||
headers={'content-type': 'text/javascript; charset=UTF-8'},
|
||||
timeout=TIMEOUT_IN_SECONDS)
|
||||
timeout=timeout or TIMEOUT_IN_SECONDS)
|
||||
response_text = response.text
|
||||
try:
|
||||
self._id, response_text = self.RESPONSE_PATTERN.match(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue