Description
During a video call connection attempt, the zoomClient.join() function gets stuck and hangs indefinitely. The function neither successfully joins the session nor throws an error. This results in:
- First user’s application only loading the first user’s own video
- Second user’s application only loading the second user’s own video
- Other video panes showing “Loading…” indefinitely
- No errors shown in the application logs
The function appears to be waiting indefinitely for a response from the Zoom service, leaving the application in a partially connected state where local video streams work but peer video streams never load.
Session ID: 9aZfak+eRTWWbKhFOqAdDg==
Browser Console Error
No errors are shown in the logs. The application simply hangs at the zoomClient.join() call without completing or throwing an error.
Which Web Video SDK version?
2.1.10
Video SDK Code Snippets
The code snippets that are causing the error / issue so we can reproduce:
Desktop Application (Electron):
const videoCallSetUp = async (signature: string, session: string, agentName: string) => {
try {
window.api.saveLog({
message: `videoCallSetUp :: setting up videocall`,
level: LogLevel.INFO,
meta: { agentName, session }
});
if (!signature || !session) {
throw new Error('Signature or session is missing');
}
// create and initialize zoom client
zoomClient = ZoomVideo.createClient();
await zoomClient?.init('en-US', 'CDN', {
stayAwake: true
});
// Join session - THIS CALL HANGS HERE
await zoomClient?.join(session, signature, `${agentName}`);
// This code never executes when the hang occurs
const mediaStream = zoomClient?.getMediaStream();
stream = mediaStream;
const usersInRoom = zoomClient.getAllUser();
return usersInRoom;
} catch (error) {
// Error handler never fires when hang occurs
await window.api.saveLog({
message: 'error occurred: videoCallSetup: ',
level: LogLevel.ERROR,
meta: { session, agentName, sessionId: zoomClient?.getSessionInfo()?.sessionId },
stackTrace: error
});
console.error('error occurred: videoCallSetup', error);
}
};
Web Application:
const videoCallSetUp = async (data: { signature: string; session: string }, imgURL: string) => {
try {
zoomClient = ZoomVideo.createClient();
await zoomClient?.init('en-US', 'CDN', {
stayAwake: true,
enforceVirtualBackground: true
});
// Join session - THIS CALL HANGS HERE
await zoomClient?.join(
data.session,
data.signature,
`User Display Name`
);
// This code never executes when the hang occurs
const mediaStream = zoomClient?.getMediaStream();
stream = mediaStream;
if (zoomClient) {
zoomClient.on('peer-video-state-change', peerVideoLister);
zoomClient.on('user-updated', onUserUpdated);
zoomClient.on('user-removed', onUserRemoved);
}
await mediaStream?.startAudio();
await mediaStream?.startVideo({
hd: true,
videoElement,
virtualBackground: { imageUrl: imgURL }
});
} catch (error) {
// Error handler never fires when hang occurs
console.error('error occurred', error);
}
};
To Reproduce
Steps to reproduce the behavior:
- Initialize the Zoom Video SDK client
- Call
zoomClient.init()with ‘en-US’, ‘CDN’, and configuration options - Call
zoomClient.join()with valid session and signature - The
join()promise never resolves or rejects - Local video streams start successfully
- Peer video streams never load (show “Loading…” indefinitely)
- No error is thrown, no timeout occurs
Note: This issue occurs intermittently.
Troubleshooting Routes
The troubleshooting attempt types you’ve already exhausted:
- Verified session and signature are valid (other calls work successfully)
- Checked network connectivity (no network errors)
- Verified that
zoomClient.init()completes successfully - Confirmed the issue is not a timeout issue (no timeout error thrown)
- Verified that the promise never resolves or rejects
- Checked application logs - no errors logged during the hang period
Device:
Desktop Application:
- Device: Windows Desktop Application
- OS: Windows 10
- Browser: Electron (Chromium-based)
- Browser Version: Electron 38.2.2
Web Application:
- Device: Desktop/Laptop
- OS: Windows 10 / macOS
- Browser: Chrome
- Browser Version: Latest
Additional context
- The function hangs indefinitely without throwing an error or timing out
- This creates a poor user experience as the application appears to be loading but never completes
- The issue occurs after successful calls, indicating it’s not a configuration issue
- We are using Zoom Video SDK version 2.1.10
- We need a timeout mechanism or error handling for this scenario, but the SDK should handle this gracefully
- Logs show the function was stuck from (21:10:28 UTC) until call was cancelled