Moving forward on websockets

This commit is contained in:
Kum1ta
2024-07-31 23:41:11 +02:00
parent 08e50356b1
commit e3654d77b6
5 changed files with 70 additions and 41 deletions

View File

@ -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())

View File

@ -1,25 +1,31 @@
import asyncio import asyncio
import websockets import websockets
import json
import time
connected_clients = set() connected_clients = set()
validTokens = "123456" validTokens = "123456"
def sendData(websocket):
while True:
websocket.send("Heartbeat")
print("Heartbeat send")
time.sleep(5)
async def handler(websocket, path): async def handler(websocket, path):
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) connected_clients.add(websocket)
try : try :
async for message in websocket: async for message in websocket:
print(f"Received {message}") print(f"Message reçu : {message}")
# for client in connected_clients:
# if client == websocket:
# print(f"Received {message}")
# await websocket.close()
# if client != websocket:
# await client.send(message)
except websockets.exceptions.ConnectionClosed as e: except websockets.exceptions.ConnectionClosed as e:
print(f"Connexion fermée: {e}") print("Client disconnected with error :", e)
finally: sendData(websocket)
print("Client déconnecté")
connected_clients.remove(websocket)
try: try:
start_server = websockets.serve(handler, "localhost", 8000, reuse_address=True) start_server = websockets.serve(handler, "localhost", 8000, reuse_address=True)
@ -27,4 +33,5 @@ except OSError as e:
print(f"Error: {e}") print(f"Error: {e}")
exit(1) exit(1)
asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_until_complete(start_server)
print("Server started")
asyncio.get_event_loop().run_forever() asyncio.get_event_loop().run_forever()

View File

@ -6,7 +6,7 @@
<title>Chat</title> <title>Chat</title>
<meta name='viewport' content='width=device-width, initial-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' type='text/css' href='style.css'> <link rel='stylesheet' type='text/css' href='style.css'>
<script src='main.js'></script> <script type="module" src='main.js'></script>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">

View File

@ -6,11 +6,14 @@
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */ /* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/30 13:50:35 by edbernar #+# #+# */ /* Created: 2024/07/30 13:50:35 by edbernar #+# #+# */
/* Updated: 2024/07/31 00:37:11 by edbernar ### ########.fr */ /* Updated: 2024/07/31 22:26:47 by edbernar ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
import { mainSocket } from "./websocket.js";
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
mainSocket();
liveChat(); liveChat();
}); });

View File

@ -0,0 +1,45 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* websocket.js :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/31 22:17:24 by edbernar #+# #+# */
/* Updated: 2024/07/31 23:40:05 by edbernar ### ########.fr */
/* */
/* ************************************************************************** */
const socket = new WebSocket('ws://localhost:8000/');
socket.onopen = () => {
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 };