diff --git a/transphase/quartphase.py b/transphase/quartphase.py new file mode 100644 index 0000000..8d42555 --- /dev/null +++ b/transphase/quartphase.py @@ -0,0 +1,33 @@ +import json +import asyncio +from quart import Quart, websocket + +peer_list = {} + +app = Quart(__name__) + +@app.route("/") +async def retmain(): + return f"Ready to relay\n" + +@app.websocket("/ws") +async def handle_websockets(): + peer_group_id = None + while True: + try: + message = await websocket.receive() + msg = json.loads(message) + if "peer_group_id" in msg: + peer_group_id = msg["peer_group_id"] + if peer_group_id not in peer_list: + peer_list[peer_group_id] = set() + peer_list[peer_group_id].add(websocket._get_current_object()) + for peer in peer_list[peer_group_id]: + if peer != websocket._get_current_object(): + await peer.send(message) + except asyncio.exceptions.CancelledError: + peer_list[peer_group_id].remove(websocket._get_current_object()) + if len(peer_list[peer_group_id]) < 1: + peer_list.pop(peer_group_id) + +app.run() \ No newline at end of file diff --git a/transphase/requirements.txt b/transphase/requirements.txt index 3584239..4b455bc 100644 --- a/transphase/requirements.txt +++ b/transphase/requirements.txt @@ -1,6 +1,2 @@ -asyncio==3.4.3 -cffi==1.15.1 cryptography==40.0.2 -pycparser==2.21 -pyjson==1.3.0 -websockets==11.0.2 \ No newline at end of file +quart \ No newline at end of file