aiohttp websocket и redis pub / sub - PullRequest
0 голосов
/ 23 марта 2020

Я создал простой сервер веб-сокетов, используя aiohttp. мой сервер читает сообщение из redis pub / sub и отправляет его клиенту. это мой код веб-сокета:

import aiohttp
from aiohttp import web
import aioredis


router = web.RouteTableDef()

@router.get("/ws")
async def websocket_handler(request):

    ws = web.WebSocketResponse()
    await ws.prepare(request)
    sub = request.config_dict["REDIS"]
    ch, *_ = await sub.subscribe('hi')

    async for msg in ch.iter(encoding='utf-8'):
        await ws.send_str('{}: {}'.format(ch.name, msg))

async def init_redis(app):
    redis_pool = await aioredis.create_redis_pool('redis://localhost')
    app["REDIS"] = redis_pool
    yield
    redis_pool.close()
    await redis_pool.wait_closed()



async def init_app():
    app = web.Application()
    app.add_routes(router)
    app.cleanup_ctx.append(init_redis)
    return app


web.run_app(init_app())

мой первый клиент может подключиться к серверу и получать сообщения, но когда я создаю другого клиента для подключения к этой конечной точке, он не получает сообщений! в чем проблема ? как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...