From a0e52b07dae126e046116ec6a7c2502d2ef3f468 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Wed, 31 Jul 2024 01:09:19 +0200 Subject: [PATCH] Module livechat : - Style finish - Just button "new conversation" not ready - Starting websocket but its --- site/module_livechat/server/a.py | 23 +++ site/module_livechat/server/main.py | 28 +++ .../{chat => module_livechat/site}/index.html | 0 site/{chat => module_livechat/site}/main.js | 166 ++++++++++++++---- site/{chat => module_livechat/site}/pp.jpg | Bin site/{chat => module_livechat/site}/style.css | 84 +++++++-- 6 files changed, 258 insertions(+), 43 deletions(-) create mode 100644 site/module_livechat/server/a.py create mode 100644 site/module_livechat/server/main.py rename site/{chat => module_livechat/site}/index.html (100%) rename site/{chat => module_livechat/site}/main.js (50%) rename site/{chat => module_livechat/site}/pp.jpg (100%) rename site/{chat => module_livechat/site}/style.css (70%) diff --git a/site/module_livechat/server/a.py b/site/module_livechat/server/a.py new file mode 100644 index 0000000..46b76ea --- /dev/null +++ b/site/module_livechat/server/a.py @@ -0,0 +1,23 @@ +import asyncio +import websockets + +async def send_messages(websocket): + while True: + message = input("Enter message to send: ") + await websocket.send(message) + 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) + +# Démarrer le client +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 new file mode 100644 index 0000000..02bc041 --- /dev/null +++ b/site/module_livechat/server/main.py @@ -0,0 +1,28 @@ +import asyncio +import websockets + +connected_clients = set() +validTokens = "123456" + +async def handler(websocket, path): + connected_clients.add(websocket) + try: + async for message in websocket: + for client in connected_clients: + if client == websocket: + print(f"Message reçu: {message}") + if message == validTokens: + await client.send("Token valide") + else: + await client.send("Token invalide") + if client != websocket: + await client.send(message) + except websockets.exceptions.ConnectionClosed as e: + print(f"Connexion fermée: {e}") + finally: + print("Client déconnecté") + connected_clients.remove(websocket) + +start_server = websockets.serve(handler, "localhost", 8000) +asyncio.get_event_loop().run_until_complete(start_server) +asyncio.get_event_loop().run_forever() \ No newline at end of file diff --git a/site/chat/index.html b/site/module_livechat/site/index.html similarity index 100% rename from site/chat/index.html rename to site/module_livechat/site/index.html diff --git a/site/chat/main.js b/site/module_livechat/site/main.js similarity index 50% rename from site/chat/main.js rename to site/module_livechat/site/main.js index 390f00c..0d5a795 100644 --- a/site/chat/main.js +++ b/site/module_livechat/site/main.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* main.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ +/* By: edbernar { gameButtonChatHome.removeAttribute("id"); privateButtonChatHome.setAttribute("id", "selected"); @@ -77,8 +75,12 @@ function liveChat() { function showListUserMessage(userList) { const divMessageListChatHome = document.getElementById("messageListChatHome"); + let divUser; + divMessageListChatHome.style.height = "100%"; + divMessageListChatHome.style.paddingBottom = "10px"; divMessageListChatHome.innerHTML = ''; + divMessageListChatHome.scrollTop = 0; userList.forEach(element => { divMessageListChatHome.innerHTML += `
@@ -87,8 +89,15 @@ function showListUserMessage(userList) {

${element.name}

- `; + `; }); + divMessageListChatHome.innerHTML += "

New conversation +

"; + divUser = document.getElementsByClassName("user"); + for (let i = 0; i < divUser.length; i++) { + divUser[i].addEventListener("click", () => { + launchPrivateChat(userList[i]); + }); + } } function showActualGameMessage() { @@ -111,29 +120,32 @@ function showActualGameMessage() { content: "Hey", date: "19:21 30/07/2024" }, - // { - // from: "Astropower", - // content: "Do you want play ?", - // date: "19:22 30/07/2024" - // }, - // { - // from: "Kumita", - // content: "Yes, i'm ready !", - // date: "19:22 30/07/2024" - // }, - // { - // from: "Kumita", - // content: "The game was too hard but well played", - // date: "19:27 30/07/2024" - // }, - // { - // from: "Astropower", - // content: "Yeah but you still won. See you soon", - // date: "19:27 30/07/2024" - // }, + { + from: "Astropower", + content: "Do you want play ?", + date: "19:22 30/07/2024" + }, + { + from: "Kumita", + content: "Yes, i'm ready !", + date: "19:22 30/07/2024" + }, + { + from: "Kumita", + content: "The game was too hard but well played", + date: "19:27 30/07/2024" + }, + { + from: "Astropower", + content: "Yeah but you still won. See you soon", + date: "19:27 30/07/2024" + }, ] }; //Remplace temporairement la requete qui devra être de la meme forme + + divMessageListChatHome.style.height = "230px"; + divMessageListChatHome.style.paddingBottom = "20px"; divMessageListChatHome.innerHTML = ''; if (request.isInGame === false) { @@ -142,14 +154,104 @@ function showActualGameMessage() { } request.listMessage.forEach(element => { divMessageListChatHome.innerHTML += ` -
-

${element.content}

-

${element.date}

-
+
+

${element.content}

+

${element.date}

+
`; }); + divMessageListChatHome.scrollTop = divMessageListChatHome.scrollHeight; divMessageListChatHome.innerHTML += ` -
+
+ +

\>

+
`; - divMessageListChatHome.setAttribute("contenteditable", "true"); +} + +function launchPrivateChat(user) { + const divMessageListChatHome = document.getElementById("messageListChatHome"); + const divButtonTypeChatHome = document.getElementById("buttonTypeChatHome"); + let returnButton; + let me = "Kumita"; + let request = { + opponent: { + name: user.name, + pfp: user.pfp + }, + listMessage: [ + { + from: user.name, + content: "Salut !", + date: "10:05 31/07/2024" + }, + { + from: "Kumita", + content: "Hey", + date: "10:05 31/07/2024" + }, + { + from: user.name, + content: "Tu veux coder un peu ?", + date: "10:06 31/07/2024" + }, + { + from: "Kumita", + content: "Ouais, je suis partant !", + date: "10:06 31/07/2024" + }, + { + from: "Kumita", + content: "Ce bug était vraiment galère à résoudre, mais on y est arrivé.", + date: "10:45 31/07/2024" + }, + { + from: user.name, + content: "Ouais, mais t'as trouvé la solution. À la prochaine !", + date: "10:46 31/07/2024" + }, + ] + }; //Remplace temporairement la requete qui devra être de la meme forme + + let h2Button = divButtonTypeChatHome.getElementsByTagName("h2"); + let len = h2Button.length; + for (let i = 0; i < len; i++) { + h2Button[i - i].remove(); + } + divButtonTypeChatHome.innerHTML += ` +

${user.name}

+

Return

+ `; + h2Button[0].style.cursor = "default"; + returnButton = document.getElementById("returnButton"); + returnButton.style.cursor = "pointer"; + returnButton.addEventListener("click", () => { + divButtonTypeChatHome.innerHTML = ` +

Private

+

Game

+ `; + liveChat(); + }); + + + + divMessageListChatHome.style.height = "230px"; + divMessageListChatHome.style.paddingBottom = "20px"; + divMessageListChatHome.innerHTML = ''; + request.listMessage.forEach(element => { + divMessageListChatHome.innerHTML += ` +
+

${element.content}

+

${element.date}

+
+ `; + }); + divMessageListChatHome.scrollTop = divMessageListChatHome.scrollHeight; + divMessageListChatHome.innerHTML += ` +
+ +

\>

+
+ `; + } diff --git a/site/chat/pp.jpg b/site/module_livechat/site/pp.jpg similarity index 100% rename from site/chat/pp.jpg rename to site/module_livechat/site/pp.jpg diff --git a/site/chat/style.css b/site/module_livechat/site/style.css similarity index 70% rename from site/chat/style.css rename to site/module_livechat/site/style.css index 62a02fa..9fd4fbf 100644 --- a/site/chat/style.css +++ b/site/module_livechat/site/style.css @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* style.css :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ +/* By: edbernar