From 12b3e5cfe5726cb5c21fb9cf6f46e574151d3e52 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Tue, 20 May 2025 14:57:33 +0200 Subject: [PATCH] unregistering an observer when the user closes the browser --- src/server.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server.py b/src/server.py index dd411f3..2003d6e 100644 --- a/src/server.py +++ b/src/server.py @@ -2,7 +2,7 @@ from flask import Flask, request from flask_cors import CORS from flask_socketio import SocketIO -from utils.observer import Status, Subject +from utils.observer import Status, Subject, SocketObserver from routes.index import router as index_router from routes.answers import QUEUE_MANAGER, router as answers_router from routes.datasets import router as datasets_router @@ -49,6 +49,16 @@ def init_socketio(app): def on_connect(): print('Websocket client connected') + @socketio.on('disconnect') + def on_disconnect(): + print('Websocket client disconnected') + sid = request.sid # type: ignore + if sid in SocketObserver.socket2obs: + obs = SocketObserver.socket2obs.pop(sid) + if obs in Subject.obs2subject: + subject = Subject.obs2subject.pop(obs) + subject.unregisterObserver(obs) + @socketio.on('get_queue_position') def on_get_queue_position(data): sid = request.sid # type: ignore