diff --git a/test/test_websocket.py b/test/test_websocket.py index fcbcedbae..ebebbcbe7 100644 --- a/test/test_websocket.py +++ b/test/test_websocket.py @@ -122,6 +122,7 @@ def __init__(self, host, port): # that the asyncio server thread has finished startup. self._server_started_event = threading.Event() self._server_thread = threading.Thread(target=self._run_server_thread) + self._current_connection = None def __enter__(self): # main thread is entering the `with` block: start the server... @@ -179,6 +180,13 @@ async def _run_connection(self, server_connection: websockets_server_3rdparty.Se self._current_connection = None def send_async(self, msg): + # Wait for a connection to be established before trying to send + max_wait = time() + TIMEOUT + while self._current_connection is None: + if time() > max_wait: + raise RuntimeError("Timeout waiting for WebSocket connection to be established") + sleep(0.01) + asyncio.run_coroutine_threadsafe(self._current_connection.send(msg), self._server_loop)