0

我一直在使用一个名为icy的包,它使用 Node v8.11.3 中的 Http Client。

我正在连接到带有连续音频的流媒体 Icecast 服务器。

代码如下所示:

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

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

当 Icecast 服务器重新启动或超时时,就会出现问题。

我希望该函数在超时后尝试重新连接,但在文档中没有找到它的选项。

任何帮助,将不胜感激。

干杯!

4

1 回答 1

2

您需要捕获错误事件和流事件的完成:

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);
    });
})();
于 2018-10-02T22:56:36.647 回答