0

我正在访问一个流式传输响应的 API(用于 HTTP/1.1 的 RFC2616)。流永远不会结束,但有时会出现错误,要求程序重新启动请求。我不知道如何在 NodeJS 中重新启动请求而不重新启动程序。我尝试循环检查是否发生错误,但我最终创建了一个阻止请求方法的阻塞代码。下面的代码一直有效,直到发生错误。

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://api.tradestation.com/v3/marketdata/stream/quotes/IWM',
  headers: {Authorization: 'Bearer ' + api.token,},
};

request(options)
  .on('data', function (data) {
    console.log(data.toString());
    //Process data here
  })
  .on('error', function (err) {
    console.error(err);
  });

如果有帮助,流式传输 API 的文档在这里,API 调用在这里

附带说明一下,我尝试使用 Axios,但它似乎不喜欢无穷无尽的流(尝试过 onDownloadProgress)。

4

1 回答 1

0

我会将您的请求放在一个函数中,然后您可以在出错时再次调用它。我还会稍微延迟重试..

例如。

function callAPI() {
  request(options)
    .on('data', function (data) {
      console.log(data.toString());
      //Process data here
    })
    .on('error', function (err) {
      console.error(err);
      setTimeout(callAPI, 1000); //wait a second and retry.
    });
}
于 2021-12-12T18:37:37.020 回答