Узел http-клиент переподключается после истечения времени ожидания соединения - PullRequest
0 голосов
/ 02 октября 2018

Я использую пакет под названием icy , который использует Http Client из Node v8.11.3.

Я подключаюсь к стримерному серверу Icecast с непрерывным звуком.

Код выглядит следующим образом:

icy.get(url, (res) => {

  res.on('end', (e) => console.log('connection ends')); // end of connection
  res.on('metadata' => () => {...}); // metadata handler
}

Проблема возникает, когда Icecastсервер перезагружается или время ожидания истекло.

Я хочу, чтобы функция попыталась повторно подключиться после истечения времени ожидания, но не нашла опцию для этого в документации.

Любая помощь будет оценена.

Ура!

1 Ответ

0 голосов
/ 03 октября 2018

Вам нужно перехватить событие ошибки и завершение события потока:

const icy = require('icy');

var url = 'http://ice4.lagrosseradio.info/lagrosseradio-metal-024.mp3';

(function play() {
    this.count = 0
    this.timeout

    function restart(error) {
        this.count++;
        console.error(this.count + ' reconnect...');
        clearTimeout(this.timeout);
        this.timeout = setTimeout(play, 100);
    }

    const client = icy.get(url, function(res) {
        res.on('metadata', function(metadata) {
            console.log(icy.parse(metadata));
        });
        client.on('close', function(error) {
            restart(error);
        });
    });
    client.on('error', function(error) {
        restart(error);
    });
})();
...