initial reqrite using Quart
This commit is contained in:
33
transphase/quartphase.py
Normal file
33
transphase/quartphase.py
Normal file
@@ -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()
|
||||||
@@ -1,6 +1,2 @@
|
|||||||
asyncio==3.4.3
|
|
||||||
cffi==1.15.1
|
|
||||||
cryptography==40.0.2
|
cryptography==40.0.2
|
||||||
pycparser==2.21
|
quart
|
||||||
pyjson==1.3.0
|
|
||||||
websockets==11.0.2
|
|
||||||
Reference in New Issue
Block a user