Поддерживает ли библиотека NodeJS https поддержку отработки отказа DNS? - PullRequest
3 голосов
/ 12 января 2020

Допустим, я выполняю HTTP-запрос GET к хосту, DNS-запись которого содержит несколько IP-адресов, например twitter.com:

twitter.com.        45  IN  A   104.244.42.1
twitter.com.        45  IN  A   104.244.42.65

Предположим, один из этих IP-адресов недоступен по некоторым причинам (например, исходящее соединение заблокировано на брандмауэре).

Будет ли https.get() пробовать все эти IP-адреса из результатов DNS-запроса или только один из них?

var https = require('https');

https.get('https://www.twitter.com', function(res) { ... }

Я выполнил пример теста с блокировкой одного из этих адресов, и, похоже, он не выполняет повторную попытку к другому IP-адресу, когда первый из них недоступен. Но из-за отсутствия журналов отладки я не уверен на 100%. Могут ли некоторые подтвердить это предположение или опровергнуть его вместо на основании исходного кода библиотеки или официальной документации ?


]$ dig twitter.com

...

;; ANSWER SECTION:
twitter.com.        60  IN  A   104.244.42.1
twitter.com.        60  IN  A   104.244.42.193

104.244.42.193 заблокирован в брандмауэре

]$ node failovertest.js 
Error: connect ETIMEDOUT 104.244.42.193:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1137:16) {
  errno: -110,
  code: 'ETIMEDOUT',
  syscall: 'connect',
  address: '104.244.42.193',
  port: 443
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...