@@ -157,9 +157,6 @@ async def config(sid):
157157 namespace = self .admin_namespace )
158158
159159 self .sio .start_background_task (config , sid )
160- self .stop_stats_event = self .sio .eio .create_event ()
161- self .stats_task = self .sio .start_background_task (
162- self ._emit_server_stats )
163160
164161 async def admin_emit (self , _ , namespace , room_filter , event , * data ):
165162 await self .sio .emit (event , data , to = room_filter , namespace = namespace )
@@ -183,6 +180,8 @@ async def shutdown(self):
183180 if self .stats_task : # pragma: no branch
184181 self .stop_stats_event .set ()
185182 await asyncio .gather (self .stats_task )
183+ self .stats_task = None
184+ self .stop_stats_event .clear ()
186185
187186 async def _trigger_event (self , event , namespace , * args ):
188187 t = time .time ()
@@ -195,6 +194,9 @@ async def _trigger_event(self, event, namespace, *args):
195194 serialized_socket ,
196195 datetime .fromtimestamp (t , timezone .utc ).isoformat (),
197196 ), namespace = self .admin_namespace )
197+ if not self .sio .eio ._get_socket (eio_sid ).upgraded :
198+ self .sio .start_background_task (
199+ self ._check_for_upgrade , eio_sid , sid , namespace )
198200 elif event == 'disconnect' :
199201 del self .sio .manager ._timestamps [sid ]
200202 reason = args [1 ]
@@ -273,6 +275,7 @@ async def _emit(self, event, data, namespace, room=None, skip_sid=None,
273275 async def _handle_eio_connect (self , eio_sid , environ ):
274276 if self .stop_stats_event is None :
275277 self .stop_stats_event = self .sio .eio .create_event ()
278+ if self .stats_task is None :
276279 self .stats_task = self .sio .start_background_task (
277280 self ._emit_server_stats )
278281
0 commit comments