未知 IceCast 失败

未知 IceCast 失败

我有一个 node.js 脚本,它在守护进程模式下工作。该脚本会读取 IceCast ogg 流本身(即时)并将音频标签发送到网站。但有时(每 2 天一次)脚本会失败并退出。脚本的错误日志显示:

Error: getaddrinfo ENOTFOUND stream_url stream_url:8000
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
Emitted 'error' event at:
    at Socket.socketErrorListener (_http_client.js:392:9)
    at Socket.emit (events.js:198:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)
events.js:174
      throw er; // Unhandled 'error’ event

其中“stream_url”是真正的ogg流URL。

我还注意到,如果改变流网址在其他一些可以正常工作的 ogg 流上(不是我的,只是通过 Google 找到的),不再出现错误。IceCast 错误日志对此只字未提,只有 INFO 和一些有关网络(图标)的 WARN。

看起来 IceCast 以某种方式崩溃或禁用了域或端口/套接字,或者可能不是其本身,但却导致了这种影响。

可能存在什么问题?

PS操作系统是CentOS。

答案1

查看 NodeJS 文档dns.lookup()了解出了什么问题。

这有没有什么与 Icecast 相关的操作。NodeJS 无法将 FQDN/主机名(在这个意义上stream_url是错误的)解析为 IP 地址。这可能有很多原因,例如:

  • NodeJS 资源耗尽或停滞
  • 系统资源不足
  • 所查询的解析器 DNS 没有正确应答
  • 解析器的互联网连接已中断
  • 该 FQDN 的权威 DNS 服务器没有应答

您的实际用例最好通过其他方式解决,例如查询 Icecast JSON API 端点、解析其 playlist.log 或从源客户端获取数据。

相关内容