如何在2分钟后阻止axios重试请求

时间:2018-05-30 15:53:09

标签: node.js reactjs express axios

我开发了一个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重试。

我在快递js中使用了以下代码,并发现它确实断开连接。但我不知道是谁断开了它。是axios还是表达js?

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

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

1 个答案:

答案 0 :(得分:0)

根据文档,您可以创建axios实例并配置超时。

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