From e3654d77b66712dcc1062d5805e3c237c87d9e09 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Wed, 31 Jul 2024 23:41:11 +0200 Subject: [PATCH] Moving forward on websockets --- site/module_livechat/server/a.py | 26 --------------- site/module_livechat/server/main.py | 33 +++++++++++-------- site/module_livechat/site/index.html | 2 +- site/module_livechat/site/main.js | 5 ++- site/module_livechat/site/websocket.js | 45 ++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 41 deletions(-) delete mode 100644 site/module_livechat/server/a.py create mode 100644 site/module_livechat/site/websocket.js diff --git a/site/module_livechat/server/a.py b/site/module_livechat/server/a.py deleted file mode 100644 index 008914e..0000000 --- a/site/module_livechat/server/a.py +++ /dev/null @@ -1,26 +0,0 @@ -import asyncio -import websockets - -async def send_messages(websocket): - while True: - message = input("Enter message to send: ") - if (websocket.open): - await websocket.send(message) - else: - print("Connection closed") - break - print(f"Sent: {message}") - -async def receive_messages(websocket): - while True: - response = await websocket.recv() - print(f"Received: {response}") - -async def main(): - uri = "ws://localhost:8000" - async with websockets.connect(uri) as websocket: - send_task = asyncio.create_task(send_messages(websocket)) - receive_task = asyncio.create_task(receive_messages(websocket)) - await asyncio.gather(send_task, receive_task) - -asyncio.run(main()) \ No newline at end of file diff --git a/site/module_livechat/server/main.py b/site/module_livechat/server/main.py index b8edfc3..35cd68f 100644 --- a/site/module_livechat/server/main.py +++ b/site/module_livechat/server/main.py @@ -1,25 +1,31 @@ import asyncio import websockets +import json +import time connected_clients = set() validTokens = "123456" +def sendData(websocket): + while True: + websocket.send("Heartbeat") + print("Heartbeat send") + time.sleep(5) + async def handler(websocket, path): - connected_clients.add(websocket) - try: + print("New client connected to the server") + if path != "/": + print("client disconnected") + await websocket.send(json.dumps({"error": "Invalid path", "code": 9000})) + await websocket.close() + return + connected_clients.add(websocket) + try : async for message in websocket: - print(f"Received {message}") - # for client in connected_clients: - # if client == websocket: - # print(f"Received {message}") - # await websocket.close() - # if client != websocket: - # await client.send(message) + print(f"Message reçu : {message}") except websockets.exceptions.ConnectionClosed as e: - print(f"Connexion fermée: {e}") - finally: - print("Client déconnecté") - connected_clients.remove(websocket) + print("Client disconnected with error :", e) + sendData(websocket) try: start_server = websockets.serve(handler, "localhost", 8000, reuse_address=True) @@ -27,4 +33,5 @@ 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() \ No newline at end of file diff --git a/site/module_livechat/site/index.html b/site/module_livechat/site/index.html index b3843e4..9cdfe6c 100644 --- a/site/module_livechat/site/index.html +++ b/site/module_livechat/site/index.html @@ -6,7 +6,7 @@ Chat - + diff --git a/site/module_livechat/site/main.js b/site/module_livechat/site/main.js index 0d5a795..897eac1 100644 --- a/site/module_livechat/site/main.js +++ b/site/module_livechat/site/main.js @@ -6,11 +6,14 @@ /* By: edbernar { + mainSocket(); liveChat(); }); diff --git a/site/module_livechat/site/websocket.js b/site/module_livechat/site/websocket.js new file mode 100644 index 0000000..d896bbb --- /dev/null +++ b/site/module_livechat/site/websocket.js @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* websocket.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: edbernar { + console.log('Connected'); + setInterval(() => { + socket.send("Heartbeat"); + }, 10000); +}; + +socket.onmessage = (event) => { + let response; + + try { + response = JSON.parse(event.data); + } catch { + return ; + } + if (response.code >= 9000 && response.code <= 9999) + { + console.warn(response); + return ; + } + console.log(response) +}; +socket.onclose = () => { + console.log('Disconnected'); +}; + +function mainSocket() { + +} + +export { mainSocket };