# async def sendData(websocket): # while True: # try: # await websocket.send(json.dumps({"message": "Hello client"})) # except websockets.exceptions.ConnectionClosed as e: # connected_clients.remove(websocket) # print("Client disconnected with error :", e) # break # await asyncio.sleep(1) # async def receiveData(websocket): # try : # async for message in websocket: # print(f"Message reçu : {message}") # except websockets.exceptions.ConnectionClosed as e: # print("Client disconnected with error :", e) # def verifyToken(websocket): # try: # token = websocket.request_headers["Sec-WebSocket-Protocol"] # print(f"Token reçu : {token}") # if token == validTokens: # return True # else: # return False # except KeyError as e: # print(f"Error: {e}") # return False # async def handler(websocket, path): # print("client connected") # connected_clients.add(websocket) # websocket.request_headers["Sec-WebSocket-Protocol"] = "123456" # await websocket.send("Connection established") # # try: # # if path != "/": # # print("client disconnected") # # await websocket.send(json.dumps({"error": "Invalid path", "code": 9010})) # # await websocket.close() # # return # # if verifyToken(websocket) == False: # # print("client disconnected") # # await websocket.send(json.dumps({"error": "Invalid token", "code": 9000})) # # await websocket.close() # # return # # send_task = asyncio.create_task(sendData(websocket)) # # receive_task = asyncio.create_task(receiveData(websocket)) # # await asyncio.gather(receive_task, send_task) # # # except websockets.exceptions.ConnectionClosed as e: # # # print("Client disconnected with error :", e) # # # connected_clients.remove(websocket) # # # return # # # finally: # # # connected_clients.remove(websocket) # # # websocket.close() # try: # start_server = websockets.serve(handler, "localhost", 8000, reuse_address=True) # except OSError as e: # print(f"Error: {e}") # exit(1) # asyncio.get_event_loop().run_until_complete(start_server) # print("Server started") # asyncio.get_event_loop().run_forever()