我一直在使用名为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服务器重新启动或超时时会出现问题。
我希望函数在超时后尝试重新连接,但在文档中没有找到该选项。
任何帮助将不胜感激。
干杯!
答案 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);
});
})();