diff --git a/core/communication/websocket.py b/core/communication/websocket.py index 4e40d2a..e53096a 100644 --- a/core/communication/websocket.py +++ b/core/communication/websocket.py @@ -539,7 +539,7 @@ class WebSocketHandler: async def _handle_set_session_id(self, message: SetSessionIdMessage) -> None: """Handle setSessionId message.""" display_identifier = message.payload.displayIdentifier - session_id = message.payload.sessionId + session_id = str(message.payload.sessionId) if message.payload.sessionId is not None else None logger.info(f"[RX Processing] setSessionId for display {display_identifier}: {session_id}") diff --git a/core/streaming/manager.py b/core/streaming/manager.py index 5b4637c..e2f02d9 100644 --- a/core/streaming/manager.py +++ b/core/streaming/manager.py @@ -380,6 +380,8 @@ class StreamManager: def set_session_id(self, display_id: str, session_id: str): """Set session ID for tracking integration.""" + # Ensure session_id is always a string for consistent type handling + session_id = str(session_id) if session_id is not None else None with self._lock: for subscription_info in self._subscriptions.values(): # Check if this subscription matches the display_id diff --git a/core/tracking/integration.py b/core/tracking/integration.py index 3f1ebe0..8c96750 100644 --- a/core/tracking/integration.py +++ b/core/tracking/integration.py @@ -474,6 +474,8 @@ class TrackingPipelineIntegration: display_id: Display identifier session_id: Session identifier """ + # Ensure session_id is always a string for consistent type handling + session_id = str(session_id) if session_id is not None else None self.active_sessions[display_id] = session_id logger.info(f"Set session {session_id} for display {display_id}")