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..42541748 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.warning("Received non-Text message: %s", msg.data) + continue + self._logger.debug("Received: %s", msg.data) try: