import aiohttp from aiohttp import WSMsgType from aiohttp.web_response import Response from aiohttp.web_ws import WebSocketResponse from aiohttp_jinja2 import template import time import asyncio async def time_response(ws: WebSocketResponse, delay: int = 60): while True: new_time: time.gmtime = time.gmtime(time.time()) time_response = f'Время: {new_time.tm_hour + 3}:{new_time.tm_min} Задержка: {delay}' try: await ws.send_str(time_response) await asyncio.sleep(delay) except ConnectionResetError: await asyncio.sleep(delay) @template('index.html') async def index(request): return {} @template('index_2.html') async def index_2(request): return {} async def websocket_handler(request): ws: WebSocketResponse = WebSocketResponse() await ws.prepare(request) asyncio.create_task(time_response(ws)) async for msg in ws: if msg.type == aiohttp.WSMsgType.TEXT: if msg.data == 'close': await ws.close() else: await ws.send_str(f'Вы послали: {msg.data}') elif msg.type == WSMsgType.ERROR: print('ws connection closed with exception %s' % ws.exception()) print('websocket connection closed') return ws async def button_clicked(request): data = await request.post() text = data.get('text') response_text = f'Вы ввели: {text}' print(response_text) return Response(text=response_text)