MEAN тайм-аут соединения клиент-сервер для загрузки PDF - PullRequest
0 голосов
/ 13 марта 2019

Я использую MEAN Stack для нашего проекта. Чтобы сгенерировать pdf используя pdfmake, Сценарий выглядит следующим образом: сначала нужно получить изображения с локального сервера, чтобы все работало нормально. Для масштабируемости приходится перемещать изображения в AWS и данные с другого сервера. Теперь процесс выглядит так: сначала загрузите изображения из aws, затем создайте буфер, преобразуйте его в base64 и передайте в pdfmake. Теперь возникает проблема подключения клиент-сервер. клиент делает запрос http для pdf, сервер обрабатывает его, но загрузка изображения из aws занимает слишком много времени, поэтому разрыв соединения с клиентом означает сервер обрабатывает запрос и отправляет ответ обратно, но никто не может его прослушать.

/** client **/
function logicTriplogs() {
  $rootScope.isLoading = true;
  AssignsService.logicTriplogs({
      driverId: vm.driver
    }, {
      _ids: vm.selectedTrips,
      scheduleTime: vm.scheduleTime,
      companyImage: vm.companyImage
    },
    function(response) {

      console.log(response);
      $rootScope.isLoading = false;
      var Name = response.pdfName;
      var data = response.content;
      SaveFile.downloadURI(Name, data);
      console.log('PDF Name:', Name);
    },
    function(err) {
      console.log(err);
      vm.error = err.data.message;
      $rootScope.isLoading = false;

    });
}
/** Server **/
getAssignedTripQuery(query, type)
  .exec(function(err, assigns) {
    if (err) {
      console.log('Manifest');
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    }
    if (assigns.length) {
      logicMan(req.body, user, driver, assigns, function(docDefinition) {
        var pdfName = `${moment_tz.tz(startDay, req.user.timeZone).format('MM-DD-YYYY')}.pdf`;
        config.pdfBuffer(docDefinition, function(err, pdfDoc) {
          console.log('EROROR PDF: ', err);
          if (err) {
            console.log('pdfmake function call error');
            return res.status(400).send({
              message: 'Error while generate pdf'
            });
          }
          console.log('PDF Name:', pdfName);
          return res.json({
            message: 'Generated Susscessfuly',
            pdfName: pdfName,
            content: pdfDoc
          });
        });
      });
    } else {
      return res.status(400).send({
        message: 'Some thing went wrong. Please try later.'
      });
    }
  });
...