Guard against multiple client creations
@@ -86,9 +86,14 @@ class HomeAssistantWebSocket(CoreSysAttributes):
"""Initialize Home Assistant object."""
self.coresys: CoreSys = coresys
self._client: Optional[WSClient] = None
+ self._lock: asyncio.Lock = asyncio.Lock()
async def _get_ws_client(self) -> WSClient:
"""Return a websocket client."""
+ async with self._lock:
+ if self._client is not None:
+ return self._client
+
await self.sys_homeassistant.api.ensure_access_token()
client = await WSClient.connect_with_auth(
self.sys_websession_ssl,
