From afc30dacd6ebc1a2b6711ab211bb5e00f1b03428 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt <m.vanderveldt@outlook.com> Date: Tue, 6 Feb 2024 17:25:09 +0100 Subject: [PATCH 1/2] log non-text messages in websocket api --- matter_server/client/connection.py | 5 ++++- matter_server/server/client_handler.py | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/matter_server/client/connection.py b/matter_server/client/connection.py index 2dcb5a4d..dcc424b6 100644 --- a/matter_server/client/connection.py +++ b/matter_server/client/connection.py @@ -1,4 +1,5 @@ """Logic to manage the WebSocket connection to the Matter server.""" + from __future__ import annotations import asyncio @@ -121,7 +122,9 @@ async def receive_message_or_raise(self) -> MessageType: raise ConnectionFailed() if ws_msg.type != WSMsgType.TEXT: - raise InvalidMessage(f"Received non-Text message: {ws_msg.type}") + raise InvalidMessage( + f"Received non-Text message: {ws_msg.type}: {ws_msg.data}" + ) try: msg = parse_message(json_loads(ws_msg.data)) diff --git a/matter_server/server/client_handler.py b/matter_server/server/client_handler.py index 9f9d460a..07ad24b9 100644 --- a/matter_server/server/client_handler.py +++ b/matter_server/server/client_handler.py @@ -1,4 +1,5 @@ """Logic to handle a client connected over WebSockets.""" + from __future__ import annotations import asyncio @@ -67,7 +68,7 @@ async def disconnect(self) -> None: async def handle_client(self) -> web.WebSocketResponse: """Handle a websocket response.""" - # pylint: disable=too-many-branches + # pylint: disable=too-many-branches,too-many-statements request = self.request wsock = self.wsock try: @@ -91,13 +92,17 @@ async def handle_client(self) -> web.WebSocketResponse: while not wsock.closed: msg = await wsock.receive() - if msg.type in (WSMsgType.CLOSE, WSMsgType.CLOSING): + if msg.type in (WSMsgType.CLOSED, WSMsgType.CLOSE, WSMsgType.CLOSING): break - if msg.type != WSMsgType.TEXT: - disconnect_warn = "Received non-Text message." + if msg.type == WSMsgType.ERROR: + disconnect_warn = f"Received error message: {msg.data}" break + if msg.type != WSMsgType.TEXT: + self._logger.debug("Received non-Text message: %s", msg.data) + continue + self._logger.debug("Received: %s", msg.data) try: From 55af648c00641efbc6f370595c6a6edf3aeb78c9 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt <marcel.vanderveldt@nabucasa.com> Date: Tue, 6 Feb 2024 17:54:08 +0100 Subject: [PATCH 2/2] Update matter_server/server/client_handler.py Co-authored-by: Stefan Agner <stefan@agner.ch> --- matter_server/server/client_handler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matter_server/server/client_handler.py b/matter_server/server/client_handler.py index 07ad24b9..42541748 100644 --- a/matter_server/server/client_handler.py +++ b/matter_server/server/client_handler.py @@ -100,7 +100,7 @@ async def handle_client(self) -> web.WebSocketResponse: break if msg.type != WSMsgType.TEXT: - self._logger.debug("Received non-Text message: %s", msg.data) + self._logger.warning("Received non-Text message: %s", msg.data) continue self._logger.debug("Received: %s", msg.data)