From ecc5c98accebe176c0714da059f743a415c60e87 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 7 May 2025 12:59:47 +0200 Subject: [PATCH] Better logs for connection/component lifecycle --- src/livekit/useECConnectionState.ts | 3 +++ src/room/GroupCallView.tsx | 7 +++++++ src/room/InCallView.tsx | 19 ++++++++++++++++--- src/room/LobbyView.tsx | 16 +++++++++++++++- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/livekit/useECConnectionState.ts b/src/livekit/useECConnectionState.ts index fa9a3038..90eda057 100644 --- a/src/livekit/useECConnectionState.ts +++ b/src/livekit/useECConnectionState.ts @@ -137,13 +137,16 @@ async function connectAndPublish( livekitRoom.once(RoomEvent.SignalConnected, tracker.cacheWsConnect); try { + logger.info(`[Lifecycle] Connecting to livekit room ${sfuConfig!.url} ...`); await livekitRoom!.connect(sfuConfig!.url, sfuConfig!.jwt, { // Due to stability issues on Firefox we are testing the effect of different // timeouts, and allow these values to be set through the console peerConnectionTimeout: window.peerConnectionTimeout ?? 45000, websocketTimeout: window.websocketTimeout ?? 45000, }); + logger.info(`[Lifecycle] ... connected to livekit room`); } catch (e) { + logger.error("[Lifecycle] Failed to connect", e); // LiveKit uses 503 to indicate that the server has hit its track limits. // https://github.com/livekit/livekit/blob/fcb05e97c5a31812ecf0ca6f7efa57c485cea9fb/pkg/service/rtcservice.go#L171 // It also errors with a status code of 200 (yes, really) for room diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx index 0d727485..4ea356bf 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -118,6 +118,13 @@ export const GroupCallView: FC = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + useEffect(() => { + logger.info("[Lifecycle] GroupCallView Component mounted"); + return (): void => { + logger.info("[Lifecycle] GroupCallView Component unmounted"); + }; + }, []); + useEffect(() => { window.rtcSession = rtcSession; return (): void => { diff --git a/src/room/InCallView.tsx b/src/room/InCallView.tsx index b434a1da..c337bc3c 100644 --- a/src/room/InCallView.tsx +++ b/src/room/InCallView.tsx @@ -127,10 +127,23 @@ export const ActiveCall: FC = (props) => { const [vm, setVm] = useState(null); useEffect(() => { + logger.info( + `[Lifecycle] InCallView Component mounted, livekitroom state ${livekitRoom?.state}`, + ); return (): void => { - livekitRoom?.disconnect().catch((e) => { - logger.error("Failed to disconnect from livekit room", e); - }); + logger.info( + `[Lifecycle] InCallView Component unmounted, livekitroom state ${livekitRoom?.state}`, + ); + livekitRoom + ?.disconnect() + .then(() => { + logger.info( + `[Lifecycle] Disconnected from livekite room, state:${livekitRoom?.state}`, + ); + }) + .catch((e) => { + logger.error("[Lifecycle] Failed to disconnect from livekit room", e); + }); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/src/room/LobbyView.tsx b/src/room/LobbyView.tsx index 0cabc645..72079783 100644 --- a/src/room/LobbyView.tsx +++ b/src/room/LobbyView.tsx @@ -5,7 +5,14 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ -import { type FC, useCallback, useMemo, useState, type JSX } from "react"; +import { + type FC, + useCallback, + useMemo, + useState, + type JSX, + useEffect, +} from "react"; import { useTranslation } from "react-i18next"; import { type MatrixClient } from "matrix-js-sdk"; import { Button } from "@vector-im/compound-web"; @@ -72,6 +79,13 @@ export const LobbyView: FC = ({ onShareClick, waitingForInvite, }) => { + useEffect(() => { + logger.info("[Lifecycle] GroupCallView Component mounted"); + return (): void => { + logger.info("[Lifecycle] GroupCallView Component unmounted"); + }; + }, []); + const { t } = useTranslation(); usePageTitle(matrixInfo.roomName);