Skip to main content
New Participant
May 18, 2021
Answered

Document Services API Node JS - Socket Hang up

  • May 18, 2021
  • 3 replies
  • 2311 views

Hi,

 

I've created a Node JS solution using the document services API which converts ~15 files to PDF, then combines them to a single PDF.

 

Almost every time i run it, one of the PDF conversion or combining operations fails with 'ServiceApiError: request timed out, 10 seconds expired' and 'Unexpected Error, request could not be completed Error: socket hang up'.

 

Due to how common this error is, the solution is currently unusable.

 

I saw another post on here mentioning a similar error and it was left that it was probably a connectivity issue. I do not beleive this is the case though. The Node JS app is running on a server in a corportate data centre and we do not have connection problems.

 

I also want to mention that the error is not occuring on a specific file conversion or combine. It changes each run. I've also tried to throttle it to reduce any potential connectivity issues by running all of the operations synchronously (1 by 1), rather than all at the same time. This didn't seem to make a difference.

 

Has anyone had experience with this or can suggest what I can do?

 

Thanks!

 

 

    This topic has been closed for replies.
    Correct answer Central5EE9

    I believe this is now resolved and it turned out to be quite simple. I didn't realise you could configure the timeout lengths for the PDF Tools SDK as is in the documentation. When I increased from the default of 10 seconds it stopped the errors.

    3 replies

    New Participant
    April 8, 2022

    This can be done without having to change the source in node_modules while creating the ExecutionContext 

    const httpConfig = {connectTimeout: 60000, readTimeout: 60000 /* 1 minute */};
    const execContext = PDFServicesSdk.ExecutionContext.create(credentials, httpConfig);

     

    New Participant
    October 24, 2022

    Passing in an httpConfig object did not work for me.  I had to update the node_module source. 

    New Participant
    December 5, 2023

    With the NodeSDK, it seems that this config object must be built with a builder instance. Unfortunately this is undocumented but the following seemed to work for us. Hopefully, it helps or at the least, provides you some direction. Cheers.

     

     

          const credsBuilderInstance = PDFServicesSDK.Credentials as any;
          const configBuilderInstance = PDFServicesSDK.ClientConfig;
    
          const credentials = credsBuilderInstance
            .servicePrincipalCredentialsBuilder()
            .withClientId(clientId)
            .withClientSecret(clientSecret)
            .build();
    
          const clientConfig = configBuilderInstance
            .clientConfigBuilder()
            .withConnectTimeout(1000 * 10) // 10 seconds
            .withReadTimeout(1000 * 60) // 1 minute
            .withProcessingTimeout(1000 * 60 * 10) // 10 minutes
            .build();
    
          const executionContext = PDFServicesSDK.ExecutionContext.create(
            credentials,
            clientConfig,
          );​

     

     

     
    Central5EE9AuthorCorrect answer
    New Participant
    May 19, 2021

    I believe this is now resolved and it turned out to be quite simple. I didn't realise you could configure the timeout lengths for the PDF Tools SDK as is in the documentation. When I increased from the default of 10 seconds it stopped the errors.

    Joel Geraci
    Inspiring
    May 18, 2021

    Can you share the input files?

    New Participant
    May 18, 2021

    Sorry I can't. They contain sensitve information. They are all fairly standard Word, Excel, PowerPoint files I believe though.