This commit is contained in:
team3
2026-09-30 15:15:00 +02:00
parent 817f39a42c
commit 09ae21c4b2
6 changed files with 66 additions and 10 deletions

View File

@@ -19,16 +19,26 @@ log = logging.getLogger("events")
PUFFER = 16
_abonnenten: set[asyncio.Queue] = set()
# Welche Sitzung hinter einer Verbindung steckt — daraus ergibt sich,
# wer gerade online ist: eine offene Seite mit gewähltem Namen
_sitzungen: dict[asyncio.Queue, str] = {}
def anmelden():
def anmelden(session_id=None):
queue = asyncio.Queue(maxsize=PUFFER)
_abonnenten.add(queue)
if session_id:
_sitzungen[queue] = session_id
return queue
def abmelden(queue):
_abonnenten.discard(queue)
_sitzungen.pop(queue, None)
def sitzungen_online():
return set(_sitzungen.values())
def anzahl():
@@ -60,3 +70,5 @@ async def stream(queue, request):
yield ": ping\n\n"
finally:
abmelden(queue)
# Die anderen Seiten sollen den grünen Punkt ausmachen
senden("users")