Fix remote desktop connection timeout (#1319)

This commit is contained in:
ZacharyZcR
2026-08-24 08:43:12 +08:00
committed by GitHub
parent f0cb81c3b5
commit e5ea61e28a
@@ -443,12 +443,6 @@ export const GuacamoleDisplay = forwardRef<
const tunnel = new Guacamole.WebSocketTunnel(wsConnection.url);
const client = new Guacamole.Client(tunnel);
clientRef.current = client;
let connectWatchdog: ReturnType<typeof setTimeout> | null = null;
const clearConnectWatchdog = () => {
if (!connectWatchdog) return;
clearTimeout(connectWatchdog);
connectWatchdog = null;
};
const display = client.getDisplay();
const displayElement = display.getElement();
@@ -548,7 +542,6 @@ export const GuacamoleDisplay = forwardRef<
case 2:
break;
case 3:
clearConnectWatchdog();
isConnectingRef.current = false;
setIsReady(true);
onConnect?.();
@@ -571,7 +564,6 @@ export const GuacamoleDisplay = forwardRef<
case 4:
break;
case 5:
clearConnectWatchdog();
isConnectingRef.current = false;
setIsReady(false);
setHasError(true);
@@ -585,7 +577,6 @@ export const GuacamoleDisplay = forwardRef<
client.onerror = (error: Guacamole.Status) => {
if (!isMountedRef.current || clientRef.current !== client) return;
clearConnectWatchdog();
const errorMessage = error.message || t("guacamole.connectionError");
setIsReady(false);
setHasError(true);
@@ -643,21 +634,8 @@ export const GuacamoleDisplay = forwardRef<
};
try {
connectWatchdog = setTimeout(() => {
if (
!isMountedRef.current ||
clientRef.current !== client ||
!isConnectingRef.current
) {
return;
}
disconnectClient();
void connect();
}, 8000);
client.connect(wsConnection.query);
} catch (error) {
clearConnectWatchdog();
isConnectingRef.current = false;
if (!isMountedRef.current) return;
setIsReady(false);
@@ -671,7 +649,6 @@ export const GuacamoleDisplay = forwardRef<
onError,
refreshKeyboardHandlers,
rescaleDisplay,
disconnectClient,
connectionConfig.protocol,
connectionConfig.type,
connectionConfig.dpi,