mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-29 18:31:33 +00:00
Fix remote desktop connection timeout (#1319)
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user