Не получать сообщения от клиента Javascript - PullRequest
0 голосов
/ 09 июня 2019

Я делаю сервер на основе веб-сокетов и использую рекомендации, приведенные в https://websockets.readthedocs.io/en/stable/intro.html. Когда я включаю оба обработчика, сообщения, сгенерированные производителем_обработчиком, достигают веб-клиента нормально, но никаких сообщений, отправляемых веб-клиентом, нет. получен сервером. Код никогда не возвращается из websocket.recv (). Если я отключаю (закомментирован) файл provider_handler, то сообщения, отправленные веб-клиентом, принимаются нормально. Я использую Python 3.5.3 на Raspberry Pi 3. Что я делаю не так?

import sys
import time
import asyncio
import websockets

print(sys.version)

async def consumer(message):
    print(message)

async def producer():
    time.sleep(2)
    return "log: This is a test"


async def consumer_handler(websocket, path):
    while True:
        message = await websocket.recv()
        print("Consumer handler message received")
        await consumer(message)

async def producer_handler(websocket, path):
    time.sleep(10)
    while True:
        message = await producer()
        await websocket.send(message)

async def handler(websocket, path):
    consumer_task = asyncio.ensure_future(
        consumer_handler(websocket, path))
    producer_task = asyncio.ensure_future(
        producer_handler(websocket, path))
    done, pending = await asyncio.wait(
        [consumer_task, producer_task],
        return_when=asyncio.FIRST_COMPLETED,
    )
    for task in pending:
        task.cancel()

asyncio.get_event_loop().run_until_complete(
    websockets.serve(handler, 'localhost', 8765))
asyncio.get_event_loop().run_forever()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...