documentation/reconnection.js

/**
 * @namespace Reconnection
 * @example
 * Example 1: Reconnecting when there is a socket disconnect
 *
 * // Add listener to sessionDisconnect event
 * SkylinkEventManager.addEventListener(SkylinkConstants.EVENTS.SESSION_DISCONNECT, evt => {
 *    let onlineInterval = null;
 *    const reconnect = () => {
 *      // Detect when there is an internet connection
 *      // If this check is not present, the leaveRoom will fail if the socket disconnect is due to there being no internet access
 *      if (window.navigator.onLine) {
 *        clearInterval(onlineInterval);
 *
 *       // leaveRoom to clear the state then joinRoom again
 *       skylink.leaveRoom(roomName)
 *       .then(() => skylink.joinRoom(joinRoomOptions))
 *       .catch((err) =>{
 *          // handle error
 *        })
 *      } else {
 *        // do something - ui indicator that reconnect is in progress, etc
 *      }
 *    }
 *
 *    if (!onlineInterval) {
 *      onlineInterval = setInterval(reconnect, 1000);
 *     }
 * });
 *
 * Example 2: Reconnecting when there is an MCU disconnect
 *
 * // Add listener to serverPeerLeft event
 * SkylinkEventManager.addEventListener(SkylinkConstants.EVENTS.SERVER_PEER_LEFT, evt => {
 *  // this check is important because a leaveRoom initiated by the client will also trigger a SERVER_PEER_LEFT event
 *  if (leaveRoom initiated by local client) {
 *    // do nothing
 *   } else {
 *    // implement leaveRoom and joinRoom reconnect logic
 *    }
 *  });
 */