Клиент сервер

This commit is contained in:
Anton 2024-04-25 04:24:38 +03:00
parent 343ba8b6de
commit cbd8ab17ee
3 changed files with 63 additions and 25 deletions

24
client.html Normal file
View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Counter App</title>
</head>
<body>
<h1>Счетчик: <span id="counter">0</span></h1>
<button onclick="incrementCounter()">Увеличить счетчик</button>
<script>
var ws = new WebSocket("ws://178.44.100.206:8765");
ws.onmessage = function(event) {
document.getElementById('counter').innerText = event.data;
};
function incrementCounter() {
ws.send("increment");
}
</script>
</body>
</html>

15
client.py Normal file
View File

@ -0,0 +1,15 @@
import asyncio
import websockets
async def send_message(uri, message):
async with websockets.connect(uri) as websocket:
await websocket.send(message)
response = await websocket.recv()
print(f"Received response from server: {response}")
async def main():
uri = "ws://178.44.100.206:8765" # Замените на адрес вашего сервера WebSocket
message = "Hello, server!"
await send_message(uri, message)
asyncio.run(main())

View File

@ -1,29 +1,28 @@
import socket import asyncio
import websockets
# Создаем сокет counter = 0
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connected_clients = set()
# Задаем хост и порт для сервера async def counter_server(websocket, path):
host = "94.241.227.75" global counter
port = 12346 connected_clients.add(websocket)
try:
await websocket.send(str(counter))
async for message in websocket:
if message == 'increment':
counter += 1
# Отправляем обновление счетчика всем клиентам
await asyncio.gather(*[client.send(str(counter)) for client in connected_clients])
finally:
connected_clients.remove(websocket)
# Связываем сокет с адресом и портом def run_server():
server_socket.bind((host, port)) PORT = 8765
start_server = websockets.serve(counter_server, "178.44.100.206", PORT)
asyncio.get_event_loop().run_until_complete(start_server)
print(f'Server started on ws://http://178.44.100.206/:{PORT}')
asyncio.get_event_loop().run_forever()
# Слушаем входящие подключения if __name__ == '__main__':
server_socket.listen(3) run_server()
print(f"Сервер запущен на http://{host}:{port}/")
while True:
# Принимаем входящее подключение
client_socket, client_address = server_socket.accept()
# Отвечаем клиенту
response_body = "Hello"
response_headers = "HTTP/1.1 200 OK\nContent-Type: text/plain\nContent-Length: " + str(len(response_body)) + "\n\n"
response = response_headers + response_body
client_socket.sendall(response.encode("utf-8"))
# Закрываем соединение с клиентом
client_socket.close()