Ошибка зависания сокета с помощью запроса или иглы в NodeJS - PullRequest
1 голос
/ 19 марта 2019

При попытке подключения к внешнему веб-сайту появляется ошибка Socket Hangup, пример сбойного сайта приведен ниже. Код работает для других сайтов, и я могу успешно получить доступ к тестовому сайту, если переписать код на Python. Я не могу вносить изменения во внешний сайт, поэтому я пытаюсь улучшить сценарий NodeJS для обработки соединения. Любая помощь приветствуется

let request = require("request-promise");
let needle = require("needle");

//Check if can connect to site

    let arrTestCases = ["https://compassandstars.com"];

    for (x in arrTestCases) {
         chkcon(arrTestCases[x])
    }

    async function chkcon(req) {
        let resultJSON = {};
        let data;
        try {
            console.log ("Validating blog " + req);
    //Attempt using RequestPromise, fails with same error
    //      let getURL = await request({
    //          url: req,
    //          headers: {
    //              'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' 
    //          }
    ////            headers: {
    ////                'User-Agent': 'ouruseragent',
    ////                'Connection': 'keep-alive'
    ////            }
    //      })

            needle('get', req)

             .then(function(response) {
                resultJSON = {ValidURL: true};
                console.log("URL Validated successfully", response.body);
             })
             .catch(function(err) {
                console.log(err);
             })

        } catch (e) {
            console.log("Bad Blog URL ",e.message);
        } finally {
            console.log("Result: " + JSON.stringify(resultJSON), req);

        }

Ответ об ошибке:

Result: {} https://compassandstars.com
{ Error: socket hang up
    at TLSSocket.onConnectEnd (_tls_wrap.js:1073:19)
    at Object.onceWrapper (events.js:219:13)
    at TLSSocket.emit (events.js:132:15)
    at endReadableNT (_stream_readable.js:1101:12)
    at process._tickCallback (internal/process/next_tick.js:152:19)
  code: 'ECONNRESET',
  path: null,
  host: 'compassandstars.com',
  port: 443,
  localAddress: undefined }

Я могу воссоздать проблему с помощью NodeJS 8.10 на AWS Lambda и локально на моей машине с помощью NodeJS 9.6.1.

Мои исследования показывают, что это может быть ошибка при поиске совместимого шифра для установления SSL-соединения, но я не могу выяснить, как заставить запрос изменить запрос, чтобы обработать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...