Добрый день. Никак не соображу как мне организовать двунаправленный обмен данными через websocket соединение в
aiohttp. Например вот есть такой обработчик:
import asyncio
q_transmit = asyncio.Queue()
q_receive = asyncio.Queue()
@asyncio.coroutine
def websocket_handler(request):
ws = web.WebSocketResponse()
ws.start(request)
while True:
# input_msg = yield from ws.receive()
# yield from q_receive.put(input_msg)
output_msg = yield from q_transmit.get()
ws.send_str(output_msg)
return ws
Есть очередь q_transmit через которую поступают сообщения для конкретного соединения и я их отправляю клиенту, но куда мне воткнуть закоментированные строки для приёма сообщений от клиента для меня пока загадка. Ведь в данном случае пока один из операторов
yield from
не завершится то второй не начнётся и получается что я могу либо принимать сообщения либо отправлять. Как сделать так что бы можно было и принимать сообщения и отправлять и делать это незавсимо?