diff --git a/server.py b/server.py index 8cef7ee..567133c 100644 --- a/server.py +++ b/server.py @@ -5,20 +5,31 @@ import websockets connected = [] IDs = {} -async def handler(websocket): +async def check(websocket): await websocket.send(json.dumps({"type": "test", "message": "test packet from server"})) async for original in websocket: packet = json.loads(original) print(packet) if packet["type"] == "user_joined": IDs[websocket] = packet["name"] - connected.append(websocket) - websockets.broadcast(connected, json.dumps({"type": "server_message", "message": IDs[websocket] + " joined"})) elif packet["type"] == "shout" or packet['type'] == "server_message": websockets.broadcast(connected, json.dumps({"type": "shout", "name": IDs[websocket], "message": packet["message"]})) +async def handler(websocket): + while True: + try: + connected.append(websocket) + await check(websocket) + except websockets.exceptions.ConnectionClosed: + websockets.broadcast(connected, json.dumps({"type": "server_message", "message": IDs[websocket] + " joined"})) + break + finally: + if websocket in connected: + connected.remove(websocket) + + async def main(): async with websockets.serve(handler, "", 8080): await asyncio.Future() # run forever