Zoom web SDK not allowing more than 2 participants

I am using zoom web sdk in browser every thing is working fine host and participant is able join meeting but when we try to join meeting with 3rd participant it gives a message to 3rd participant that meeting is not started , Timeout .
I am using free version API Web SDK.
1st participant is Host Join Successfully
2nd Attendee Join Successfully
3rd Participant Attendee is unable to join and get the following message meeting is not started , Timeout

Here is my js code which is used for both attendee and host details come dynamically from the form.

    var meetConfig = {
            apiKey: API_KEY,
            apiSecret: API_SECRET,
            meetingNumber: parseInt(document.getElementById('meeting_number').value),
            userName: document.getElementById('name').value,
            passWord: document.getElementById('meeting_pwd').value,
            leaveUrl: 'finish.html',
            role: parseInt(document.getElementById('meeting_role').value, 10)
        };


        var signature = ZoomMtg.generateSignature({
            meetingNumber: meetConfig.meetingNumber,
            apiKey: meetConfig.apiKey,
            apiSecret: meetConfig.apiSecret,
            role: meetConfig.role,
            success: function(res){
                console.log(res.result);
            }
        });

        ZoomMtg.init({
            leaveUrl: 'finish.html',
            isSupportAV: true,
            screenShare: true,
            success: function () {
                ZoomMtg.join(
                    {
                        meetingNumber: meetConfig.meetingNumber,
                        userName: meetConfig.userName,
                        signature: signature,
                        apiKey: meetConfig.apiKey,
                        passWord: meetConfig.passWord,
                        success: function(res){
                            $('#nav-tool').hide();
                            console.log('join meeting success');

            // meeting set to record by default
            ZoomMtg.record({
              record: true
            });
            // meeting set to show record button
             ZoomMtg.showRecordFunction({
              show: true
             });
                        },
                        error: function(res) {
                            console.log(res);
                        }
                    }
                );
            },
            error: function(res) {
                console.log(res);
            }
        });

Hey @abdullah,

Which version of the Web SDK are you using?

Can you send me the Web SDK signature via developersupport@zoom.us so I can debug the issue?

Thanks,
Tommy

Thanks for reply @tommy
I am using Zoom SDK CDN :

and these are links which i am using in my file
src=“source.zoom.us/1.7.7/lib/vendor/react.min.js
Some other scripts as well as this forum is not allowing
src=“https://source.zoom.us/zoom-meeting-1.7.7.min.js

Here is some other code which is mention in JS File which i have already mention in above question:
console.log(‘checkSystemRequirements’);
console.log(JSON.stringify(ZoomMtg.checkSystemRequirements()));

// it's option if you want to change the WebSDK dependency link resources. setZoomJSLib must be run at first
// if (!china) ZoomMtg.setZoomJSLib('https://source.zoom.us/1.7.7/lib', '/av'); // CDN version default
// else ZoomMtg.setZoomJSLib('https://jssdk.zoomus.cn/1.7.7/lib', '/av'); // china cdn option 
// ZoomMtg.setZoomJSLib('http://localhost:9999/node_modules/@zoomus/websdk/dist/lib', '/av'); // Local version default, Angular Project change to use cdn version
ZoomMtg.preLoadWasm();
ZoomMtg.prepareJssdk();

I have only this code
I am using php code to create a meeting which is working fine:
and web SDK Javascript Code to attend the meeting which is already mention in above question
and here is the PHP code:

require_once 'jwt/BeforeValidException.php';
require_once 'jwt/ExpiredException.php';
require_once 'jwt/SignatureInvalidException.php';
require_once 'jwt/JWT.php';

use \Firebase\JWT\JWT;
class Zoom_Api {
  public $zoom_api_key = 'NOT_MENTION_FOR_PRIVACY';
  public $zoom_api_secret = 'NOT_MENTION_FOR_PRIVACY';
  function __construct($key,$secret){
    $this->zoom_api_key=$key;
    $this->zoom_api_secret=$secret;

  }
  protected function sendRequest($data) {
            $request_url = 'https://api.zoom.us/v2/users/me/meetings';
            $headers = array(
   "authorization: Bearer ".$this->generateJWTKey(),
   'content-type: application/json'
   );       
          
           $postFields = json_encode($data);
     $ch = curl_init();
   curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
   curl_setopt($ch, CURLOPT_URL, $request_url);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
   $response = curl_exec($ch);
   $err = curl_error($ch);
   curl_close($ch);
   if(!$response){
    return $err;
   }      
   return json_decode($response);
  }

  //function to generate JWT
        private function generateJWTKey() {
            $key = $this->zoom_api_key;
            $secret = $this->zoom_api_secret;
            $token = array(
                "iss" => $key,
                "exp" => time() + 3600 //60 seconds as suggested
            );
  // $token = "";
            return JWT::encode( $token, $secret );
        }
  
  public function createAMeeting( $data = array() ) {
            $post_time  = $data['start_date'];
            $start_time= $post_time;  
            $createAMeetingArray = array();
            if ( ! empty( $data['alternative_host_ids'] ) ) {
                if ( count( $data['alternative_host_ids'] ) > 1 ) {
                    $alternative_host_ids = implode( ",", $data['alternative_host_ids'] );
                } else {
                    $alternative_host_ids = $data['alternative_host_ids'][0];
                }
            }
            $createAMeetingArray['topic']      = $data['meetingTopic'];
            $createAMeetingArray['agenda']     = ! empty( $data['agenda'] ) ? $data['agenda'] : "";
            $createAMeetingArray['type']       = ! empty( $data['type'] ) ? $data['type'] : 2; //Scheduled
            $createAMeetingArray['start_time'] = $start_time;
            $createAMeetingArray['timezone']   = $data['timezone'];
            $createAMeetingArray['password']   = ! empty( $data['password'] ) ? $data['password'] : "";
            $createAMeetingArray['duration']   = ! empty( $data['duration'] ) ? $data['duration'] : 60;
            $createAMeetingArray['settings']   = array(
                // 'join_before_host'  => ! empty( $data['join_before_host'] ) ? true : false,
              'join_before_host'  => true,
                'host_video'        => ! empty( $data['option_host_video'] ) ? true : false,
                'participant_video' => ! empty( $data['option_participants_video'] ) ? true : false,
                'mute_upon_entry'   => ! empty( $data['option_mute_participants'] ) ? true : false,
                'enforce_login'     => ! empty( $data['option_enforce_login'] ) ? true : false,
                'auto_recording'    => ! empty( $data['option_auto_recording'] ) ? $data['option_auto_recording'] : "none",
                'alternative_hosts' => isset( $alternative_host_ids ) ? $alternative_host_ids : ""
            );
            return $this->sendRequest($createAMeetingArray);
        }

        function Hellozoom($title,$md,$mt,&$resp=array()){
          try{
            $timeZone=date_default_timezone_get();
            $start_time=date("Y-m-d\TH:i:s\Z",strtotime($md." ".$mt));
$z = $this->createAMeeting(
 array(
  'start_date'=>$start_time,
  'meetingTopic'=>$title,
  'timezone'=>$timeZone
 )
);
$resp=$z;
} catch (Exception $ex) {
echo $ex;
}
  }
 }

Hey @abdullah,

Can you share the Web SDK signature you are generating for the 3rd participant?

Thanks,
Tommy