Getting error on video export

I am new to milestone i have requirement to export video from milestone via third party application. I use sample code i.e videExport provided in web example. I getting error on calling XPMobileSDK.getThumbnailByTime. Error: The application has lost connection due to connectionRequestResponseIsTerminal

(function (undefined) {
 
  function ExportController() {
 
    var cameraItem;
 
    var container;
 
    var progressIndicator;
 
    var image = document.createElement('img');
 
    var canvas;
 
    var canvasContext;
 
    var exportId;
 
 
 
    function getThumbnailCallback(thumbnail, timestamp) {
 
      const imageBlob = b64toBlob(thumbnail, 'image/jpeg', 512);
 
 
 
      var imageURL = window.URL.createObjectURL(imageBlob);
 
 
 
      image.src = imageURL;
 
    }
 
 
 
    function b64toBlob(b64Data, contentType, sliceSize) {
 
      const byteCharacters = atob(b64Data);
 
      const byteArrays = [];
 
 
 
      for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
 
        const slice = byteCharacters.slice(offset, offset + sliceSize);
 
 
 
        const byteNumbers = new Array(slice.length);
 
        for (let i = 0; i < slice.length; i++) {
 
          byteNumbers[i] = slice.charCodeAt(i);
 
        }
 
 
 
        const byteArray = new Uint8Array(byteNumbers);
 
        byteArrays.push(byteArray);
 
      }
 
 
 
      const blob = new Blob(byteArrays, { type: contentType });
 
      return blob;
 
    }
 
 
 
    function getThumbnailErrorCallback(error) {
 
      alert('Error getting thumbnail. Code: ' + error.code);
 
    }
 
 
 
    /**
 
     * Request thumbnail for given time
 
     */
 
    function getThumbnail(event) {
 
      event.stopPropagation();
 
 
 
      // This is the time you request from the server
 
      // You can set it to any valid timestamp
 
      var thumbnailTime = Date.now();
 
 
 
      var params = {
 
        cameraId: cameraItem.Id,
 
        width: 400,
 
        height: 225,
 
        time: thumbnailTime
 
      };
 
 
 
      /**
 
       * Requesting a thumbnail. 
 
       */
 
      XPMobileSDK.getThumbnailByTime(params, getThumbnailCallback, getThumbnailErrorCallback);
 
    }
 
 
 
    function onImageLoad(event) {
 
      canvas.width = image.width;
 
      canvas.height = image.height;
 
 
 
      canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
 
    }
 
 
 
    function startExport() {
 
      // generate start and end time of the export with duration of 10 s
 
      var end = new Date().getTime();
 
      var start = end - 10000;
 
      var exportRequest = XPMobileSDK.startVideoExport(cameraItem.Id, start, end, startExportCallback, exportError);
 
    }
 
 
 
    function exportError(error) {
 
      alert('Error on export. Code: ' + error.code);
 
    }
 
 
 
    function startExportCallback(expId) {
 
      exportId = expId;
 
 
 
      updateStatus();
 
    }
 
 
 
    var updateStatus = function () {
 
      XPMobileSDK.getExport(exportId, getExportCallback, exportError)
 
    }
 
 
 
    function getExportCallback(status) {
 
      // update UI
 
      progressIndicator.style.width = status.State * 3.8 + 'px'; 
 
 
 
      // continue with the refresh or downlaod the prepared export
 
      if ((status.State >= 0) & (status.State <= 100)) {
 
        setTimeout(() => { updateStatus() }, 1000);
 
      }
 
      else if (status.State == 101) {
 
        downloadExport(XPMobileSDKSettings.MobileServerURL + "/" + status.Link);
 
      }
 
    }
 
 
 
    var downloadExport = function (url) {
 
      var a = document.createElement('a');
 
      a.href = url;
 
      a.download = 'download';
 
      a.click();
 
    }
 
 
 
    function addExportButton() {
 
      var overlay = document.createElement('div');
 
      var progressBar = document.createElement('div');
 
      progressIndicator = document.createElement('div');
 
      progressIndicator.id = "progress-indicator";
 
      var button = document.createElement('button');
 
 
 
      function stopPropagation(event) { event.stopPropagation(); };
 
 
 
      progressBar.appendChild(progressIndicator);
 
      progressBar.classList.add('progress');
 
      progressBar.addEventListener('click', stopPropagation);
 
 
 
      overlay.classList.add('cloak');
 
      overlay.addEventListener('click', stopPropagation);
 
 
 
      button.classList.add('start-export-button');
 
      button.addEventListener('click', (event) => {
 
        getThumbnail(event);
 
        startExport();
 
      });
 
      button.innerText = 'Start export';
 
 
 
      container.appendChild(overlay);
 
      container.appendChild(progressBar);
 
      container.appendChild(button);
 
    }
 
 
 
    function init(event) {
 
      cameraItem = event.detail.cameraItem;
 
      container = event.detail.cameraContainer;
 
 
 
      image.addEventListener('load', onImageLoad);
 
 
 
      canvas = container.querySelector('canvas');
 
      canvasContext = canvas.getContext('2d');
 
 
 
      addExportButton();
 
    }
 
 
 
    return {
 
      init: init
 
    };
 
  }
 
 
 
  var connectionDidLogIn = function () {
 
    var container = document.getElementById('export-container');
 
 
 
    Application.connectionDidLogIn(container);
 
 
 
    container.addEventListener('cameraElementAdded', function (event) {
 
      var thumbnailController = new ExportController();
 
 
 
      thumbnailController.init(event);
 
    });
 
  };
 
 
 
  window.addEventListener('load', function () {
 
    var params = {
 
      connectionDidLogIn: connectionDidLogIn
 
    };
 
 
 
    LoginManager.loadAndLogin(params);
 
  });
 
})();
 

Hello Donny,

can you check if there are something suspicions in the Mobile server log usually located at [C:\ProgramData\Milestone\XProtect Mobile](file:C:/ProgramData/Milestone/XProtect%C2%A0Mobile) Server\Logs

You can also attach it here so we can also have a look to search for some clues.

Kindly regards

Asen