From 7bee4f6519b519b261045b2d6805e7eb8d814765 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Sat, 3 Aug 2024 23:51:09 +0200 Subject: [PATCH] Websocket : - Connect with token : good - Connect with mail/pass : good but wait for front - Open private msg : good but it cant send message - fixed some bug on printDebug on class User on wsServer --- site/module_livechat/note,txt | 68 ------------ site/module_livechat/server/Class/User.py | 102 ++++++++++++------ .../Class/__pycache__/User.cpython-312.pyc | Bin 4414 -> 0 bytes site/module_livechat/server/main.py | 27 +++-- .../getPrivateListUser.cpython-312.pyc | Bin 1210 -> 0 bytes .../__pycache__/login.cpython-312.pyc | Bin 3871 -> 0 bytes .../typeRequets/getPrivateListMessage.py | 69 ++++++++++++ .../server/typeRequets/getPrivateListUser.py | 24 +++-- .../server/typeRequets/login.py | 59 +++++----- site/module_livechat/site/main.js | 66 +++--------- .../site/typeResponse/typeLogin.js | 11 +- .../typeResponse/typePrivateListMessage.js | 36 +++++++ site/module_livechat/site/websocket.js | 12 ++- 13 files changed, 270 insertions(+), 204 deletions(-) delete mode 100644 site/module_livechat/note,txt delete mode 100644 site/module_livechat/server/Class/__pycache__/User.cpython-312.pyc delete mode 100644 site/module_livechat/server/typeRequets/__pycache__/getPrivateListUser.cpython-312.pyc delete mode 100644 site/module_livechat/server/typeRequets/__pycache__/login.cpython-312.pyc create mode 100644 site/module_livechat/server/typeRequets/getPrivateListMessage.py create mode 100644 site/module_livechat/site/typeResponse/typePrivateListMessage.js diff --git a/site/module_livechat/note,txt b/site/module_livechat/note,txt deleted file mode 100644 index 515155f..0000000 --- a/site/module_livechat/note,txt +++ /dev/null @@ -1,68 +0,0 @@ -# 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() \ No newline at end of file diff --git a/site/module_livechat/server/Class/User.py b/site/module_livechat/server/Class/User.py index 1d1f304..7088b66 100644 --- a/site/module_livechat/server/Class/User.py +++ b/site/module_livechat/server/Class/User.py @@ -6,7 +6,7 @@ # By: edbernar pTqRi9&Gilpxa-lZBKhvy=lq zr!1yivSW^<+_Dp(B)b55WH&&sECKY%9)Nz?3ouX;!ahU%mZqo^NrOE72egdPaw;-~ z-_{s_c~T)c=yx{Nt6R(y5Pr#Gl#&XqkhHy9iG+n@Io5YM{?%7cPE{hjg_6q6&@>z$ zI$bOjl#H&(A#2`GbCBLGX370MOiT%*VSx6H>8`&6|I=Lrs!e85H%%#RYm(~ zcvdL1{f*fB#VIAG$Z{!mrkI(YQVO~jI}IDe-kNyxY)s4QN^GhqPv@0%K6^vSyg#YO zfQK838athz)U+5XBznDMxYOxuA*-j;Wj~*4pa=0Z1T&=W^xQ7Y7M?KoBWbM067_xk zGe^H4-GW7uY1j-ATa_mP*;SRk&Z;aCQ+-jcz9CzE$W=(rYMEWMC#Y^XO_cyVq^cJ> z4S5Qw;KjsnrPH#K2kCs4bQ~K%s$Kx?!i_#=V;hXP_NxI{%h(nN1Vi8!d|N*U@CJA) zgaHNX3$k#JeUE|Hv?>B!)6~hIp)WKm4F#`_s6qyP; z3=em_Gw6ui)zIq-vLWWQV!?38(^J>Au*mgmxTX|Mn|x1EUw~f?7gD@4scIr%A!w%N zCH(y?9$XG^-P`z!K&K@D{Fyuh1MKf#?ETHr72oL0U|n$Dj(rsSbhw(R2?KSv?~}mY zz`DC{#oc%B%>DBV=O5f$>yNFu~_>Yc7YbxTERlm%QcBEqAo$3D2|WzkgbD zzg;{d4Bp}5-XSEPqT_~L>H+A~9sq_YXEQqY0TnL*^$>zS0AYdKU)>L5>n7s1=455b zw(=mZUjbkm*fQ#1b*Lr;pEx~thHp*%NMCjK)g}KY19u13rT!JE|K7y?)Iw^}wHA!8 zNki*wXoU@Z*-B8ouqGW_XUA69u?+_iPdxjQ9oyE9!ZEXn7sj1*`2Zak#N~rWaD0l6 zi{kQYP8feKQh;qffp+B4JPQNcCt$p@Rp_;0kfjTBzjFz2nQ}kqgVol%!lIOgX7qQk zgIIEa6`b4(&ZLTNTK2zQxG|Z}$|1dYO(|rS{!DEH~vRp-H~srM7B!H8v#YS&`VniO4U(MK#=_jJKD zDm=EWq3_O~9HqaauZh2Qjna%A5U_xk7OG+EMS$}}+AWpdg=^7N+*~urWTD~ul(fvU z3eB~i0o!Bi6sEEWv>n2+Bdr5yJ6x?DX`RjBh3nphA<^KqBfZTsFJ60Cao9`XTkqOOh-{Xf`#&%au$h3~zv+P%}3 zSjQZJ6x>3$uPNUpSp5#WL?AKuBvo{Q9rYqF7gZ&rK-DIPRON$dMbpiK(W)2AT^QV$ zXw5cK?&3k;z(X+cx@==GfCa9S3^xMPc+K1 z2}!tMCp+yQ4`1c zps#vyJs4dHMr&fMF>(Lhg?DS>D>iz0;c`t3o9MlX2ZM{pKZ~sePt?R$Es_fl-dRZ3 z#E6YvS_#G;i*bI*e>_lqV{vG;-`wvx2mcqhu3mheOw|hykl~sbw*>%s9*dC;KM6+e z3_RNiP*5X(lqCMZ#NsP{pSL#?V)1le;NKU^Z#z? zs#9iPg1@lYS)H}l-5CDOK<62rCLwX-3(jz4@`%?XmY{xSfb zur~z8+;+JXT#c$FRg+lD}y`;W}^cP#|uvoucUf?@I*9Ta~ehRII>{}~OF zheCucIpQ?jg-<^8^>o_sq|??TF>UzL=?|tS^X7^f8_2JE907)fie;VZN3a(GRwHJC zcoavxencrA68?NLD?`+@iU2EhZ4AI1sr&cN95jJ1Fms?Td1v<5o$i_LO_2$~O^+ZX z=%$+qLz^ClaC|c$3V}`E0pT>=Iw=Znb93AhA1(GXSuvj2egEn_O9X1u?HHHyEXK>ky&cUy#5T#QPWL7^Utz QBkSJCiZ}9Cf*9ZBpL)z?xc~qF diff --git a/site/module_livechat/server/main.py b/site/module_livechat/server/main.py index ec56d44..ac1ef4e 100644 --- a/site/module_livechat/server/main.py +++ b/site/module_livechat/server/main.py @@ -6,10 +6,11 @@ # By: edbernar ~MAVj)H2ow2>i?#{9^ z8?y#Qg(A3crk4uN6@tHl8y7wfMB8I8^cLg`%89q@II4uiNHg>My?OI~@6Ehl%H<-0 z@p$v6-dq8prwN&knF}!P0(giRV%R~Q$&NcX<(W=~WthfvmVKnL9Luvpie|u8OwlaZ zN+~J>x{{)+fL=&YKiARN+?S}MN4PToED_v^XLq=ip~pnv(l{qP$M*Q>-GNfRe1ni7 zbsV4iJdlRvP_JqUmkfQw5}x9oBBAdH$|R|q^(A69i6w+%_&wh+>(xWQU(sUSqb`qg zQc)GkSc9{8=3Z!7LQy%0^P<;F1vjUHcGb5%+wG@Hb<_NW)K|!IleAj^mYeNXuf4Kl zHoCnUWmes4)M~9-oAQ+&?Ri(!)HhCf%sG$gsq*1$Lo7-F4!3Ud;I9y+f zjMWW$=V)lCCX@y<4OrOYOb&!~G^$L)C4u0rWVPQX$xfEdcEjk3D9Nhod;K`KO9O{T zBQm|>cV$%#r%&fXwUlf~Yolcy?VGEs#{PgO7cG3zXvvm^`2gm47nb)BhQ|909X{^? z_GB=uG7|(i^C5`KDHEle=O2-Qa5>?OMPyxAp$qLN z$(mrC?0$H6gGgI(;tCcziOw;%22>G3}pWR71cOaX6@TmGxJpW&F zun4+!nDQnpf1!Wwqq71k%zb_G`N^+0T0b{_TfF^8e(O)X^*i1=mnCre;`%N89e!Q^ zK6eXOvTq~1RfOlCpes+%ETmC-<+QwTTHO0PuWR~Q36)+tEiaxH?_Khj({uVfhx7L@`C{td byyVwX{^o=?Zxk~3_3=Ac$J;n~4N~|Qcdcjv diff --git a/site/module_livechat/server/typeRequets/__pycache__/login.cpython-312.pyc b/site/module_livechat/server/typeRequets/__pycache__/login.cpython-312.pyc deleted file mode 100644 index 79ef181b02b186f895564f93499b5536027485c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3871 zcmcguO>7&-6`t8yE_eAOQGb*yTQU>7vM5WUME#j=8d$V!*R7)(t`b8AT9@LiCCU=1 z?5?bkl>^xc+88hp6)0jBQCb!4A%@#R=qWw4uyhL03)d__cB_Md=1|>Os|UyEp>Kvi zmIXC+(7FT6+c$6K&CKq8?|bi$ZnpzL%boenm5)6L{gn;MO)e?h-vi|iqKM)dbgB5n zmoOD5p(3?WiP~3eRHh1bP$zZqk(*Z0YU-giY&1zO3AFZIbcxV9kRq)IX`>AwCF%uf zPhx-L7CUa#vd!zN)@w< zB}bztqR~!v}$2-nFXnr4UYYKEVl+Y3 zyJ8U-=VH2HiMkr6mN=~^;+Boh&(7&Ett_Y$dLnvNHA-#_N0yx}dLyFgB5dV@_T*cE zsl==rP$^9YMiSBaS-6TGI0L7tPCtjZ8FyNF69gNtqsf3C&mL#8?1=M%&L8w=nTChzjDhHW*pX5=zeljcR_d z9Aj&K3xb369}=qa?ttlWQ}U*dtag~qU0JDX?eJR442JJdemZTQ9?u5H|Chkcw4ctL zA2Xe=KRoIc^M|&G7lmJm_ewKBwq%;^x~oweL-)54CrW8F z)iPxmbNcZ>ATk&0j>Qcv(%m0~tQEKx3_!kf56>G@2`!e27_me=We=+nP1SsUY}u#O z2vs$G>r*(vPb^tuB%~XJMuDu=XT$oe7SMyuEFy?x9e#d@+47eKu3qRv?0lEHwgN+zs!ayLB#I zw>tSJSNBpAu!^HLr?i+#%W9pe9M0gce9lk1*%SP7{Be=-he6;9yp_}Jze|3QdYhj~ zy*%aa$sUz7TizQXgJmq|3$T>Xmz6FW*tI!pWDd3M@xN(s> zcEz|-w+{_vFfqd!Nvouqot40g@;o|4X2JKMja&r*+~MGDzT@M z0F_ELNCg)3TEkNUS%kSVRa7cBQm)*RPd!P=^C|S7*HbKcR)F`P&U^~{MW{}xbgy*g zUiSmIy$+q#d=3K2hWy zOPWZstYnE3$^KxfwhUAbGaoCtV%-4MRCRfxM1HX@u=+(_aq*1C;b0=M%Lz_zd^7yJftF-4xyGh#1bAu1$mo}B!3 zgmNTgl2E~o#14RFJM=c_q0b8f76v!vnq_~crF%`x$^$uJAS(>~Q@;(jya|xS?=}vH z(1&=qS6mT6TV=MNGutP4xKI2Yv;Cgg{=jVO4S0A!T=z2TIwV0aUf=Iw`cXVQB(8UI zdk?qwVrK8-a)8SrE { liveChat(); @@ -72,17 +74,17 @@ async function showListUserMessage() { divMessageListChatHome.innerHTML += "

New conversation +

"; divUser = document.getElementsByClassName("user"); for (let i = 0; i < divUser.length; i++) { - divUser[i].addEventListener("click", () => { - launchPrivateChat(userList[i]); + divUser[i].addEventListener("click", async () => { + await launchPrivateChat(userList[i]); }); } } -function showActualGameMessage() { +function showActualGameMessage(id) { const divMessageListChatHome = document.getElementById("messageListChatHome"); let me = "Kumita"; let request = { - isInGame: true, + isInGame: false, opponent: { name: "Astropower", pfp: "https://ashisheditz.com/wp-content/uploads/2024/03/cool-anime-pfp-demon-slayer-HD.jpg" @@ -147,50 +149,13 @@ function showActualGameMessage() { `; } -function launchPrivateChat(user) { +async 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 - + + sendRequest("get_private_list_message", {id: user.id}); + await waitForMessageList(); let h2Button = divButtonTypeChatHome.getElementsByTagName("h2"); let len = h2Button.length; for (let i = 0; i < len; i++) { @@ -208,17 +173,16 @@ function launchPrivateChat(user) {

Private

Game

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

${element.content}

${element.date}

diff --git a/site/module_livechat/site/typeResponse/typeLogin.js b/site/module_livechat/site/typeResponse/typeLogin.js index d352d45..bebe714 100644 --- a/site/module_livechat/site/typeResponse/typeLogin.js +++ b/site/module_livechat/site/typeResponse/typeLogin.js @@ -6,13 +6,20 @@ /* By: edbernar { + if (messageListAvailable) + resolve(); + else + messageListResolve = resolve; + }); +} + +function typePrivateListMessage(list) { + messageList = list; + messageListAvailable = true; + if (messageListResolve) + { + messageListResolve(); + messageListResolve = null; + } +} + +export { messageList, typePrivateListMessage, waitForMessageList }; \ No newline at end of file diff --git a/site/module_livechat/site/websocket.js b/site/module_livechat/site/websocket.js index 5826aab..1b16742 100644 --- a/site/module_livechat/site/websocket.js +++ b/site/module_livechat/site/websocket.js @@ -6,23 +6,27 @@ /* By: edbernar { console.log('Connected'); if (token) sendRequest("login", {"type": "byToken", "token": token}); + // |Eddy| Requete pour se connecter par mail et password. En attente du front pour le faire (déjà fonctionnel côté back) + // sendRequest("login", {type: "byPass", mail: "aa@aa.fr", password: "ABC123"}); + }; socket.onmessage = (event) => {