Всем привет!) Пока разобрался с простейшим эхо сервером:
import asyncio
from aiohttp import web
async def ws_handler(request):
ws_resp = web.WebSocketResponse()
await ws_resp.prepare(request)
async for msg in ws_resp:
await ws_resp.send_str(msg.data)
return ws_resp
app = web.Application()
app.router.add_get('/ws', ws_handler)
Как в вышеприведенный код грамотно добавить цикл, в котором сервер будет каждые 10 секунд отправлять сообщение клиенту?
# примерный набросок цикла
while True:
await ws_resp.send_str('message')
await asyncio.sleep(10)
Тут интересуют два варианта:
1) Для каждого клиента свой частный цикл, и если соединение с этим клиентом по какой-либо причине закрывается, то частный цикл прекращает свою работу;
2) Один независимый цикл для всех клиентов, прекращает работу вместе с завершением приложения