@@ -59,21 +59,21 @@ async def connect(self, url, headers={}, auth=None, transports=None,
59
59
self .input_event .clear ()
60
60
self .client = AsyncClient (* self .client_args , ** self .client_kwargs )
61
61
62
- @self .client .event
62
+ @self .client .event ( namespace = self . namespace )
63
63
def connect (): # pragma: no cover
64
64
self .connected = True
65
65
self .connected_event .set ()
66
66
67
- @self .client .event
67
+ @self .client .event ( namespace = self . namespace )
68
68
def disconnect (): # pragma: no cover
69
69
self .connected_event .clear ()
70
70
71
- @self .client .event
71
+ @self .client .event ( namespace = self . namespace )
72
72
def __disconnect_final (): # pragma: no cover
73
73
self .connected = False
74
74
self .connected_event .set ()
75
75
76
- @self .client .on ('*' )
76
+ @self .client .on ('*' , namespace = self . namespace )
77
77
def on_event (event , * args ): # pragma: no cover
78
78
self .input_buffer .append ([event , * args ])
79
79
self .input_event .set ()
@@ -172,8 +172,12 @@ async def receive(self, timeout=None):
172
172
the server included arguments with the event, they are returned as
173
173
additional list elements.
174
174
"""
175
- if not self .input_buffer :
176
- await self .connected_event .wait ()
175
+ while not self .input_buffer :
176
+ try :
177
+ await asyncio .wait_for (self .connected_event .wait (),
178
+ timeout = timeout )
179
+ except asyncio .TimeoutError : # pragma: no cover
180
+ raise TimeoutError ()
177
181
if not self .connected :
178
182
raise DisconnectedError ()
179
183
try :
@@ -189,5 +193,13 @@ async def disconnect(self):
189
193
190
194
Note: this method is a coroutine.
191
195
i """
192
- await self .client .disconnect ()
193
- self .client = None
196
+ if self .connected :
197
+ await self .client .disconnect ()
198
+ self .client = None
199
+ self .connected = False
200
+
201
+ async def __aenter__ (self ):
202
+ return self
203
+
204
+ async def __aexit__ (self , exc_type , exc_val , exc_tb ):
205
+ await self .disconnect ()
0 commit comments