连接超时后,节点http客户端重新连接

时间:2018-10-02 18:32:13

标签: node.js timeout icecast internet-radio audiostreamer

我一直在使用名为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服务器重新启动或超时时会出现问题。

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

任何帮助将不胜感激。

干杯!

1 个答案:

答案 0 :(得分: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);
    });
})();
相关问题