@@ -137,6 +137,7 @@ def connect(self, url, headers={}, auth=None, transports=None,
137
137
namespaces = [namespaces ]
138
138
self .connection_namespaces = namespaces
139
139
self .namespaces = {}
140
+ self .failed_namespaces = []
140
141
if self ._connect_event is None :
141
142
self ._connect_event = self .eio .create_event ()
142
143
else :
@@ -161,12 +162,14 @@ def connect(self, url, headers={}, auth=None, transports=None,
161
162
if wait :
162
163
while self ._connect_event .wait (timeout = wait_timeout ):
163
164
self ._connect_event .clear ()
164
- if set (self .namespaces ) == set (self .connection_namespaces ):
165
+ if len (self .namespaces ) + len (self .failed_namespaces ) == \
166
+ len (self .connection_namespaces ):
165
167
break
166
168
if set (self .namespaces ) != set (self .connection_namespaces ):
167
169
self .disconnect ()
168
170
raise exceptions .ConnectionError (
169
- 'One or more namespaces failed to connect' )
171
+ 'One or more namespaces failed to connect: '
172
+ ', ' .join (self .failed_namespaces ))
170
173
171
174
self .connected = True
172
175
@@ -425,6 +428,7 @@ def _handle_error(self, namespace, data):
425
428
elif not isinstance (data , (tuple , list )):
426
429
data = (data ,)
427
430
self ._trigger_event ('connect_error' , namespace , * data )
431
+ self .failed_namespaces .append (namespace )
428
432
self ._connect_event .set ()
429
433
if namespace in self .namespaces :
430
434
del self .namespaces [namespace ]
@@ -439,7 +443,7 @@ def _trigger_event(self, event, namespace, *args):
439
443
if handler :
440
444
try :
441
445
return handler (* args )
442
- except TypeError :
446
+ except TypeError : # pragma: no cover
443
447
# the legacy disconnect event does not take a reason argument
444
448
if event == 'disconnect' :
445
449
return handler (* args [:- 1 ])
0 commit comments