我一直在使用一个名为 icy 的包,它使用 Node v8.11.3 中的 Http 客户端。
我正在连接到具有连续音频的流媒体 Icecast 服务器。
代码如下所示:
icy.get(url, (res) => {
res.on('end', (e) => console.log('connection ends')); // end of connection
res.on('metadata' => () => {...}); // metadata handler
}
当 Icecast 服务器重新启动或超时时,问题就出现了。
我希望该函数在超时后尝试重新连接,但在文档中找不到它的选项。
任何帮助将不胜感激。
干杯!
您需要捕获错误事件和流事件的完成:
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);
});
})();