Параллельно работающий сервер websocket - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь реализовать простой сервер веб-сокетов, но застрял при попытке запустить код параллельно.

Код, который я пытаюсь запустить параллельно, выглядит следующим образом:

import keyboard

pressed_key = "None"

defined_keys = {
    "1": "a",
    "2": "b",
    "3": "c",
    "4": "d",
    "5": "e",
    "6": "f",
    "7": "g",
    "8": "h"
}

def set_pressed_key():
    global pressed_key
    pressed_key = "None"
    for key in defined_keys:
        keyboard.on_press
        if keyboard.is_pressed(key):
            # print(chr(27) + "[2J")
            pressed_key = defined_keys[key]
            break


def main():
    while True:
        set_pressed_key()
        print(pressed_key)


main()

на основе https://websockets.readthedocs.io/en/stable/intro.html#browser -based-example Я создал функцию для отправки pressed_key через веб-сокеты:

async def sendkey(websocket, path):
    while True:
        await websocket.send(pressed_key)
        await asyncio.sleep(1/10)

и при запуске с

start_server = websockets.serve(sendkey, "127.0.0.1", 5678)

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

он работает, но блокируется, и если я пытаюсь запустить main после него, он никогда не выполняется. Я попытался создать поток для него, но не смог заставить его работать, я также прочитал, что использование потоков не всегда правильно.

...