Moving forward on websockets
This commit is contained in:
@ -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())
|
|
@ -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):
|
||||||
connected_clients.add(websocket)
|
print("New client connected to the server")
|
||||||
try:
|
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:
|
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()
|
@ -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">
|
||||||
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
45
site/module_livechat/site/websocket.js
Normal file
45
site/module_livechat/site/websocket.js
Normal 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 };
|
Reference in New Issue
Block a user