From cbd8ab17ee48553b73bd9e891385dce0e87ae547 Mon Sep 17 00:00:00 2001
From: Anton <stud180315>
Date: Thu, 25 Apr 2024 04:24:38 +0300
Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=20=D1=81?=
 =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B5=D1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 client.html | 24 ++++++++++++++++++++++++
 client.py   | 15 +++++++++++++++
 server.py   | 49 ++++++++++++++++++++++++-------------------------
 3 files changed, 63 insertions(+), 25 deletions(-)
 create mode 100644 client.html
 create mode 100644 client.py

diff --git a/client.html b/client.html
new file mode 100644
index 0000000..a13cde5
--- /dev/null
+++ b/client.html
@@ -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>
\ No newline at end of file
diff --git a/client.py b/client.py
new file mode 100644
index 0000000..a556711
--- /dev/null
+++ b/client.py
@@ -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())
\ No newline at end of file
diff --git a/server.py b/server.py
index dc9a01c..9b37196 100644
--- a/server.py
+++ b/server.py
@@ -1,29 +1,28 @@
-import socket
+import asyncio
+import websockets
 
-# Создаем сокет
-server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+counter = 0
+connected_clients = set()
 
-# Задаем хост и порт для сервера
-host = "94.241.227.75"
-port = 12346
+async def counter_server(websocket, path):
+    global counter
+    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)
 
-# Связываем сокет с адресом и портом
-server_socket.bind((host, port))
+def run_server():
+    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()
 
-# Слушаем входящие подключения
-server_socket.listen(3)
-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()
\ No newline at end of file
+if __name__ == '__main__':
+    run_server()
\ No newline at end of file