From 26529bff85be0beb342782d5fbdacdda604d1f6b Mon Sep 17 00:00:00 2001 From: Yixiu1121 Date: Fri, 20 Dec 2024 17:45:40 +0800 Subject: [PATCH 1/3] Add the reason argument for async_admin when socket disconnect --- src/socketio/async_admin.py | 8 ++++---- src/socketio/async_server.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/socketio/async_admin.py b/src/socketio/async_admin.py index 162c5660..575d1bae 100644 --- a/src/socketio/async_admin.py +++ b/src/socketio/async_admin.py @@ -204,12 +204,12 @@ async def _connect(self, eio_sid, namespace): ), namespace=self.admin_namespace) return sid - async def _disconnect(self, sid, namespace, **kwargs): + async def _disconnect(self, sid, namespace, reason, **kwargs): del self.sio.manager._timestamps[sid] await self.sio.emit('socket_disconnected', ( namespace, sid, - 'N/A', + reason or 'N/A', datetime.utcnow().isoformat() + 'Z', ), namespace=self.admin_namespace) return await self.sio.manager.__disconnect(sid, namespace, **kwargs) @@ -292,9 +292,9 @@ async def _handle_eio_connect(self, eio_sid, environ): self.event_buffer.push('rawConnection') return await self.sio._handle_eio_connect(eio_sid, environ) - async def _handle_eio_disconnect(self, eio_sid): + async def _handle_eio_disconnect(self, eio_sid, reason): self.event_buffer.push('rawDisconnection') - return await self.sio._handle_eio_disconnect(eio_sid) + return await self.sio._handle_eio_disconnect(eio_sid, reason) def _eio_http_response(self, packets=None, headers=None, jsonp_index=None): ret = self.sio.eio.__ok(packets=packets, headers=headers, diff --git a/src/socketio/async_server.py b/src/socketio/async_server.py index f10fb8ae..4cd86340 100644 --- a/src/socketio/async_server.py +++ b/src/socketio/async_server.py @@ -585,7 +585,7 @@ async def _handle_disconnect(self, eio_sid, namespace, reason=None): self.manager.pre_disconnect(sid, namespace=namespace) await self._trigger_event('disconnect', namespace, sid, reason or self.reason.CLIENT_DISCONNECT) - await self.manager.disconnect(sid, namespace, ignore_queue=True) + await self.manager.disconnect(sid, namespace, reason=reason or self.reason.CLIENT_DISCONNECT, ignore_queue=True) async def _handle_event(self, eio_sid, namespace, id, data): """Handle an incoming client event.""" From 248aba06216c511f06afd3d467c42e79fb47d6a6 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Sun, 29 Dec 2024 00:31:28 +0000 Subject: [PATCH 2/3] add fixes for the sync version --- src/socketio/admin.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/socketio/admin.py b/src/socketio/admin.py index 58c8aff9..2d7042d2 100644 --- a/src/socketio/admin.py +++ b/src/socketio/admin.py @@ -216,12 +216,12 @@ def _connect(self, eio_sid, namespace): ), namespace=self.admin_namespace) return sid - def _disconnect(self, sid, namespace, **kwargs): + def _disconnect(self, sid, namespace, reason, **kwargs): del self.sio.manager._timestamps[sid] self.sio.emit('socket_disconnected', ( namespace, sid, - 'N/A', + reason or 'N/A', datetime.utcnow().isoformat() + 'Z', ), namespace=self.admin_namespace) return self.sio.manager.__disconnect(sid, namespace, **kwargs) @@ -303,9 +303,9 @@ def _handle_eio_connect(self, eio_sid, environ): self.event_buffer.push('rawConnection') return self.sio._handle_eio_connect(eio_sid, environ) - def _handle_eio_disconnect(self, eio_sid): + def _handle_eio_disconnect(self, eio_sid, reason): self.event_buffer.push('rawDisconnection') - return self.sio._handle_eio_disconnect(eio_sid) + return self.sio._handle_eio_disconnect(eio_sid, reason) def _eio_http_response(self, packets=None, headers=None, jsonp_index=None): ret = self.sio.eio.__ok(packets=packets, headers=headers, From ffafa4fb1b7fcaa307665497daa87f0f6b85412a Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Sun, 29 Dec 2024 11:14:04 +0000 Subject: [PATCH 3/3] remove unrelated change --- src/socketio/async_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/socketio/async_server.py b/src/socketio/async_server.py index 4cd86340..f10fb8ae 100644 --- a/src/socketio/async_server.py +++ b/src/socketio/async_server.py @@ -585,7 +585,7 @@ async def _handle_disconnect(self, eio_sid, namespace, reason=None): self.manager.pre_disconnect(sid, namespace=namespace) await self._trigger_event('disconnect', namespace, sid, reason or self.reason.CLIENT_DISCONNECT) - await self.manager.disconnect(sid, namespace, reason=reason or self.reason.CLIENT_DISCONNECT, ignore_queue=True) + await self.manager.disconnect(sid, namespace, ignore_queue=True) async def _handle_event(self, eio_sid, namespace, id, data): """Handle an incoming client event."""