@@ -59,21 +59,21 @@ async def connect(self, url, headers={}, auth=None, transports=None,
5959 self .input_event .clear ()
6060 self .client = AsyncClient (* self .client_args , ** self .client_kwargs )
6161
62- @self .client .event
62+ @self .client .event ( namespace = self . namespace )
6363 def connect (): # pragma: no cover
6464 self .connected = True
6565 self .connected_event .set ()
6666
67- @self .client .event
67+ @self .client .event ( namespace = self . namespace )
6868 def disconnect (): # pragma: no cover
6969 self .connected_event .clear ()
7070
71- @self .client .event
71+ @self .client .event ( namespace = self . namespace )
7272 def __disconnect_final (): # pragma: no cover
7373 self .connected = False
7474 self .connected_event .set ()
7575
76- @self .client .on ('*' )
76+ @self .client .on ('*' , namespace = self . namespace )
7777 def on_event (event , * args ): # pragma: no cover
7878 self .input_buffer .append ([event , * args ])
7979 self .input_event .set ()
@@ -172,8 +172,12 @@ async def receive(self, timeout=None):
172172 the server included arguments with the event, they are returned as
173173 additional list elements.
174174 """
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 ()
177181 if not self .connected :
178182 raise DisconnectedError ()
179183 try :
@@ -189,5 +193,13 @@ async def disconnect(self):
189193
190194 Note: this method is a coroutine.
191195i """
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