diff --git a/comm/server/main.py b/comm/server/main.py index c97576555427a7d0cedf8258cfbbe70bbfa2a6d4..f7e6ee2c2a7f0820ad7704a8c2f88f237941226d 100644 --- a/comm/server/main.py +++ b/comm/server/main.py @@ -32,7 +32,7 @@ app_args = {} questions = None clients = None current_seed = 1 -wsq = None +wsq = {} def load_questions(): global app_args @@ -213,7 +213,9 @@ def post(): with open(save_file_path, "w") as fp: json.dump(dat, fp, indent=4) - wsq.put(dat) + for k, v in wsq.items(): + if v is not None: + v.put(dat) res = {"status": "OK"} @@ -600,14 +602,15 @@ def ws(): if request.environ.get('wsgi.websocket'): ws = request.environ['wsgi.websocket'] + ws_id = time.time() + wsq[ws_id] = Queue() + while True: - if wsq is None: - time.sleep(1) - continue - else: - data = wsq.get() - str_data = json.dumps(data) - ws.send(str_data) + data = wsq[ws_id].get() + str_data = json.dumps(data) + ws.send(str_data) + + wsq[ws_id] = None @app.route("/") def index(): @@ -653,9 +656,6 @@ def init_system(): if questions is None: load_questions() - if wsq is None: - wsq = Queue() - if __name__ == "__main__": parser = argparse.ArgumentParser(description="PYNQ control panel.")