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