Как я могу остановить axios от повторной попытки запроса через 2 минуты - PullRequest
0 голосов
/ 30 мая 2018

Я разработал сервер nodejs и отреагировал на клиентское приложение.Клиент запрашивает информацию с сервера, используя axios.Эта информация должна быть получена из базы данных и занимает около 5 минут.Но клиент повторяет запрос ровно через 2 минуты.Как попросить клиента подождать 5 минут.

код клиента

  axios.get(apiServer + 'teradata/'+table).then( (resp) => {
    console.log(resp.data.data)
    )

На сервере я попробовал ниже.Но ничего не работает.

server.on('connection', function(socket) {
    //Teradata takes too long to respond. Set timeoute to 3 mins
    socket.setTimeout(0);
  })

server.on('connection', function(socket) {
    //Teradata takes too long to respond. Set timeoute to 3 mins
    socket.setTimeout(60 * 6 * 1000); 
    // 30 second timeout. Change this as you see fit.
  })

Обновление: при дальнейшей отладке я вижу, что 1. повторная попытка происходит из браузера.потому что повторение происходит в Firefox, но не в Chrome.2. соединение разрывается ровно через 2 минуты.Это приводит к тому, что firefox пытается повторить попытку.

Я использовал следующий код в express js и увидел, что он действительно отключается.Но я не знаю, кто это отключает.Это Axios или экспресс JS?

req.on("close", function() {
    console.log('request closed unexpectedly')
  });

  req.on("end", function() {
    console.log('equest ended normally')
  });    

1 Ответ

0 голосов
/ 30 мая 2018

Согласно документации вы можете создать экземпляр axios и настроить время ожидания.

const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 5000,
  headers: {'X-Custom-Header': 'foobar'}
});
...