Отправьте сообщение сервера websocket из другой функции - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь передать синхронизированные сообщения с моего сервера веб-сокетов на мой клиент.Поэтому определенное сообщение через 2 секунды, другое через 4, другое через 13 секунд и т. Д.

Я использую python для сервера.Для планирования этих событий я использую планировщик событий.Это все работает нормально, если я просто печатаю, но не удается, когда я меняю функцию печати на websocket.send.

s = sched.scheduler(time.time, time.sleep)
events = []

async def hello(websocket, path):
    name = await websocket.recv()
    print(f"< {name}")

    greeting = f"Hello {name}!"

    #await websocket.send(greeting)
    await websocket.send('connected')
    print(f"> connected")

    start_message = await websocket.recv()
    if start_message == "ready":
        await websocket.send('triggered')
        create_schedule(websocket)

def print_message(msg, ):
    print(msg)
    websocket.send(msg) #fails here

def create_schedule(ws):
    for x in events:
        s.enter(x[0], 1, print_message, argument=(x[1],))
    s.run()

start_server = websockets.serve(hello, 'localhost', 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

Что также заметно, что клиент ничего не получает, если его нет 'ждите перед websocket.send в основной функции websocket.Я пытался передать веб-сокет через create_schedule, а затем в функцию печати, но безрезультатно.

Я думаю, что главная цель - это возможность отправлять синхронизированные события веб-сокета, поэтому, если это может быть достигнуто, Отлично.Это путь, который я выбрал в настоящее время, и есть определенная фундаментальная проблема, которую я не понимаю.

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