0
1
mirror of https://github.com/radio95-rnt/RadioPlayer.git synced 2026-02-26 13:52:00 +01:00
This commit is contained in:
2025-12-13 19:40:29 +01:00
parent 4ef85281ce
commit 2cf767a3da

View File

@@ -107,6 +107,11 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws
# create the asyncio loop and run server # create the asyncio loop and run server
async def runner(): async def runner():
clients = set() clients = set()
stop_evt = asyncio.Event()
async def shutdown_watcher():
await loop.run_in_executor(None, shutdown_evt.wait)
stop_evt.set()
async def handler_wrapper(websocket: ServerConnection): async def handler_wrapper(websocket: ServerConnection):
# register client # register client
@@ -132,10 +137,12 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws
b"WebSocket upgrade required\n" b"WebSocket upgrade required\n"
) )
# start server # start server
watcher = asyncio.create_task(shutdown_watcher())
server = await websockets.serve(handler_wrapper, "0.0.0.0", 3001, server_header="RadioPlayer ws plugin", process_request=process_request) server = await websockets.serve(handler_wrapper, "0.0.0.0", 3001, server_header="RadioPlayer ws plugin", process_request=process_request)
broadcaster = asyncio.create_task(broadcast_worker(ws_q, clients)) broadcaster = asyncio.create_task(broadcast_worker(ws_q, clients))
shutdown_evt.wait() await stop_evt.wait()
watcher.cancel()
server.close() server.close()
ws_q.put(None) ws_q.put(None)
@@ -152,8 +159,6 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws
except (KeyboardInterrupt, SystemExit): pass except (KeyboardInterrupt, SystemExit): pass
finally: loop.close() finally: loop.close()
# ---------- Module class (drop-in replacement) ----------
class Module(PlayerModule): class Module(PlayerModule):
def __init__(self): def __init__(self):
self.manager = multiprocessing.Manager() self.manager = multiprocessing.Manager()