Estoy accediendo a una API que transmite (RFC2616 para HTTP/1.1) la respuesta. La transmisión nunca termina, pero de vez en cuando presenta un error que requiere que el programa reinicie la solicitud. No puedo entender cómo en NodeJS reiniciar la solicitud sin reiniciar el programa. Probé bucles para verificar si ocurrió un error, pero terminé creando un código de bloqueo que detiene los métodos de solicitud. El siguiente código funciona hasta que se produce un error.
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); });Si ayuda, la documentación de la API para la transmisión está aquí , y la llamada a la API está aquí .
En una nota al margen, intenté usar Axios pero no parece que le gusten las secuencias interminables (probé enDownloadProgress).
Colocaría su solicitud dentro de una función, luego puede llamarla nuevamente en caso de error ... También retrasaría un poco el reintento ...
p.ej.
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. }); }