diff --git a/demo/views/frontend.py b/demo/views/frontend.py index b5f5ecf..5a54784 100644 --- a/demo/views/frontend.py +++ b/demo/views/frontend.py @@ -1,16 +1,51 @@ 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 aiohttp.web.Response(text=response_text) \ No newline at end of file + return Response(text=response_text) \ No newline at end of file