fix asyncio calling, accept changes before mutating

This commit is contained in:
2021-04-02 21:27:58 +02:00
parent e6e63efb3f
commit 7556deede0
4 changed files with 58 additions and 41 deletions

10
main.py
View File

@@ -57,25 +57,25 @@ async def unregister(websocket):
await notify_users()
async def counter(websocket, path):
async def ws_handler(websocket, path):
# register(websocket) sends user_event() to websocket
await register(websocket)
try:
await websocket.send(state_event(await state.get_data()))
await websocket.send(state_event(state.get_data()))
await websocket.send(options_event())
async for message in websocket:
data = json.loads(message)
if data["type"] == "mutation":
await state.mutate(data["payload"])
asyncio.create_task(state.propagate(data["payload"]))
else:
logging.error("unsupported event: {}", data)
finally:
await unregister(websocket)
async def serve_ws():
state.register_callback(notify_state)
state.register_on_change_callback(notify_state)
await state.inc_initialized()
start_server = websockets.serve(counter, "localhost", 6789)
start_server = websockets.serve(ws_handler, "0.0.0.0", 6789)
await start_server
async def tick():