ERR_NAME_NOT_RESOLVED while calling join room

Description
We are developing an application that uses the Zoom Video SDK for Web to facilitate video conferencing between multiple parties that rotate through pre-determined rooms. That being users don’t manually join or leave rooms but rather they are forced into and out of rooms programmatically and in sync. Users are moved from room to room at regular intervals.

We are having a problem with our application whereby we are getting ERR_NAME_NOT_RESOLVED errors in the console when users should be joining one of their predetermined rooms (first room in a given rotation). This problem happens sporadically when calling the client.join(topic, token, userName, password) SDK method.

It appears to be a problem while the SDK is attempting to fetch additional JavaScript resources from zoom’s CDN.

When it happens, since the user should be auto-joined into a predetermined roomed they are not and instead are stuck in limbo. Obviously we can’t have our application function in this manner.

Browser Console Error
Failed to load resource: net::ERR_NAME_NOT_RESOLVED (dmogdx0jrul3u.cloudf…audio_simd.min.js:1)
Uncaught (in promise) TypeError: Failed to fetch (js_media.min.js:1)
Failed to load resource: net::ERR_NAME_NOT_RESOLVED (dmogdx0jrul3u.cloudf…aring_simd.min.js:1)
Failed to load resource: net::ERR_NAME_NOT_RESOLVED (dmogdx0jrul3u.cloudf…video_simd.min.js:1)
Uncaught (in promise) TypeError: Failed to fetch (js_media.min.js:1)
Uncaught (in promise) TypeError: Failed to fetch (js_media.min.js:1)

[we have a screen shot with the full log but we get an error that we cannot embed media with this post]

Which Web Video SDK version?
1.6.0

Video SDK Code Snippets

client.join(topic, token, userName, password).then(() => {
  stream = client.getMediaStream()
}).catch((error) => {
  console.log(error)
})

Additional Information
Our application is a semi automated exam platform whereby users sign in ahead of a predetermined start time. It is possible users will be online 30 minutes in advance of their start period and being connected to a room.

When a user signs on the Zoom SDK is loaded and we use the createLocalVideoTrack() and createLocalAudioTrack() functions to test the users camera, gather permissions and allow them to change their devices if required. After the user completes this step, they aren’t “joined” into their room until their scheduled start time.

It is possible they will be idle for an extended period of time before the application calls the client.join() function, which is the point when we’ve see the above ERR_NAME_NOT_RESOLVED error and the user doesn’t join their room.

We run the VideoSDK.preloadDependentAssets() function when the user first logs on in an attempt to midegate this error, but it doesn’t seem to have an effect. When client.join() is called, we see the external JS libraries loaded on the fly at that time. Not any earlier as the preloadDependentAssets() function would imply.

Troubleshooting Routes
The error happens sporadically and inside JavaScript functions/files outside of our control. Therefore we do not believe it is an issue on our end.

We were also able to find others reporting similar messages, but their threads are stale or it was reported that the errors fixed themselves:

  1. Experiencing significant number of ERR_NAME_NOT_RESOLVED errors
  2. Web SDK attempting to connect to invalid DNS names

Another troubleshooting step we’ve taken is mentioned in Additional Information whereby we try to use the preloadDependentAssets() function provided by the SDK. But that doesn’t seem to be doing anything helpful.

Device (please complete the following information):

  • Device: Desktop Computer
  • OS: Windows 11 Pro 10.0.22621 Build 22621
  • Browser: Chrome
  • Browser Version: Version 111.0.5563.65 (Official Build) (64-bit)

We just had this happen again, causing errors in our web application. This is effectively breaking our application. We cannot use the Zoom SDK in this state. We were able to capture an entire console log:

96The resource <URL> was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.
js_media.min.js:1 https://dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/video_simd.min.js
js_media.min.js:1 sharing decode fileURL: https://dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/sharing_simd.min.js
js_media.min.js:1 VP9?: true AMD?: false AMDdecodecheck: true enable720p?: true capacityfor720: false Object
dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/audio_simd.min.js:1          Failed to load resource: net::ERR_NAME_NOT_RESOLVED
2js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109715)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/sharing_simd.min.js:1          Failed to load resource: net::ERR_NAME_NOT_RESOLVED
dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/video_simd.min.js:1          Failed to load resource: net::ERR_NAME_NOT_RESOLVED
2js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:110920)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
2js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109132)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
app.js?cache=beta0.9.0:2 (2) ['Audio Error', {…}]
js_media.min.js:1 https://dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/video_simd.min.js
js_media.min.js:1 sharing decode fileURL: https://dmogdx0jrul3u.cloudfront.net/videosdk/1.6.0/lib/sharing_simd.min.js
js_media.min.js:1 VP9?: true AMD?: false AMDdecodecheck: true enable720p?: true capacityfor720: false {log: false, confId: 50332672, meetingid: '5F4D3558-E625-D706-6212-2F4AF3B056BE', meetingnumb: 85177142966, videodecodethreadnumb: 1, …}
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109715)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
i @ js_media.min.js:1
u @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
t @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
re.initAudioEncode @ js_media.min.js:1
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:110920)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
i @ js_media.min.js:1
u @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
t @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
re.initSharingDecode @ js_media.min.js:1
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:110920)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
i @ js_media.min.js:1
u @ js_media.min.js:1
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109715)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
i @ js_media.min.js:1
u @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
t @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
re.initAudioDecode @ js_media.min.js:1
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109132)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)
i @ js_media.min.js:1
u @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
Promise.then (async)
i @ js_media.min.js:1
s @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
t @ js_media.min.js:1
(anonymous) @ js_media.min.js:1
re.initVideoDecode @ js_media.min.js:1
js_media.min.js:1          Uncaught (in promise) TypeError: Failed to fetch
    at js_media.min.js:1:37295
    at new Promise (<anonymous>)
    at new t (js_media.min.js:1:1766)
    at Object.download (js_media.min.js:1:37239)
    at T (js_media.min.js:1:105627)
    at Object.<anonymous> (js_media.min.js:1:109132)
    at g (js_media.min.js:1:163824)
    at Generator._invoke (js_media.min.js:1:163612)
    at e.<computed> [as next] (js_media.min.js:1:164003)
    at i (js_media.min.js:1:3561)

Is it possible to self host these files that are being fetched with the rest of the SDK package?

Hey @devs2

Thanks for your feedback.

Are you able to access this link? https://source.zoom.us/videosdk/1.6.0/lib/js_media.min.js It’s another ZOOM-hosted CDN, just leave the second parameter empty to enable the option when you call the client.init method.

Or you can host dependent assets yourself. The files are in the @zoom/videosdk/dist/lib folder, and once they are hosted in the server, the second parameter of client.init method can accept the URL.

Thanks
Vic

Hi Vic, thanks for that. However it doesn’t appear the second parameter is working correctly.

client.init('en-US', 'https://example.com/js/videosdk/dist/lib/');

If I load https://example.com/js/videosdk/dist/lib/video_simd.min.js it works. I get the javascript file. So I know it’s accessible and I know I have the correct path. However when I call init like above I now see 404’s in my network tab while using my application:

https://example.com/js/videosdk/dist/li/js_media.min.js 404

Note the incorrect “/dist/li/”. It’s missing the “b” on lib. I am not sure how I can correct this path. In init I have “lib” in the path, not “li”. So I am not sure what is wrong.

Hey @devs2

It’s a known issue in Video SDK 1.6.0. When the own URL ends with ‘/’, we will truncate an extra character. The issue has been fixed in Video SDK 1.6.2.

Thanks
Vic

Hi @vic.yang,

Thanks for that. We updated to version 1.6.2 however it is still loading the global JavaScript files. In our init call we have: client.init('en-US', 'https://example.com/js/videosdk/dist/lib/');

When we load our application we now see a successful request to
https://example.com/js/videosdk/dist/lib/js_media.min.js

Then we see another request to:
https://source.zoom.us/videosdk/1.6.2/lib/js_media.min.js

Then four requests to:

https://source.zoom.us/videosdk/1.6.2/lib/audio_simd.min.js
https://source.zoom.us/videosdk/1.6.2/lib/video_mtsimd.min.js
https://source.zoom.us/videosdk/1.6.2/lib/video_share_mtsimd.min.js
https://source.zoom.us/videosdk/1.6.2/lib/sharing_mtsimd.min.js

I would expect these resources now to load via our hosted files and not the “global” zoom location. Any idea what is going on? We see no 404’s in the network tab in the browser. I can also confirm going to https://example.com/js/videosdk/dist/lib/audio_simd.min.js loads the JavaScript file - so we know they are there and accessible.

Hey @devs2

Did you call the ZoomVideo.preloadDependentAssets() method?

The purpose of this method is to preload the assets, the parameter of it shares the same logic as the second parameter of the inti method, which means when leaving it empty, it will preload the asset from the source.zoom.us.

Hope this could clear up your confusion.

Thanks
Vic

Thank you very much @vic.yang. It was indeed preloadDependentAssets(). Adding the same path parameter to that function fixed the issue. I see only local requests now for the SDK JavaScript dependencies.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.