diff --git a/beaver_terminal_client.py b/beaver_terminal_client.py index 039b967..dc14eb7 100644 --- a/beaver_terminal_client.py +++ b/beaver_terminal_client.py @@ -88,13 +88,13 @@ class BeaverTerminalClient: self.session_id = session_id if isinstance(session_id, str) else None async def send_text(self, text: str) -> str: - message_id = self._message_ids.next_id() - message_frame = build_message_frame(message_id=message_id, text=text) - for attempt in range(2): if not self._websocket_is_open(): await self.connect() + message_id = self._message_ids.next_id() + message_frame = build_message_frame(message_id=message_id, text=text) + try: await self._send_json(message_frame) return await self._wait_for_reply(message_id) diff --git a/test_beaver_terminal_client.py b/test_beaver_terminal_client.py index dc6ee8a..bb1b00b 100644 --- a/test_beaver_terminal_client.py +++ b/test_beaver_terminal_client.py @@ -340,6 +340,7 @@ async def test_client_reconnects_with_same_peer_id_when_socket_closes_before_sen unused_tcp_port: int, ) -> None: connect_peer_ids: list[str] = [] + message_ids: list[str] = [] connection_count = 0 async def websocket_handler(request: web.Request) -> web.WebSocketResponse: @@ -360,9 +361,11 @@ async def test_client_reconnects_with_same_peer_id_when_socket_closes_before_sen "session_id": "terminal-dev:local:device-001", } ) + elif frame["type"] == "message": + message_ids.append(frame["message_id"]) if current_connection == 1: await ws.close() - elif frame["type"] == "message": + continue await ws.send_json( { "type": "ack", @@ -407,3 +410,4 @@ async def test_client_reconnects_with_same_peer_id_when_socket_closes_before_sen assert reply == "reply after reconnect" assert connect_peer_ids == ["device-001", "device-001"] + assert message_ids == ["device-001-000001", "device-001-000002"]