首页 > 解决方案 > 如何定期检查服务器是否在线而不用错误消息填充控制台日志?

问题描述

我对特定文件使用 ajax GET 请求,以检查服务器是否在线。当服务器不在线时,控制台日志中的每个文件请求都有一条错误消息(“net::ERR_CONNECTION_REFUSED”)。服务器位于本地网络上(地址为 10.0.0.xxx)。我的 JavaScript 代码每秒检查一次,因为我想立即知道服务器何时恢复在线。

标签: javascript

解决方案


没有办法抑制这些错误,但是在您的情况下,您可以通过设置httpRequest.timeout非常低的值(例如1000(1 秒))来逃脱。它将在控制台中超时而不会出现错误。

[更新] 我不确定我的浏览器是否已更新(Edge 92.0.902.62),但我不再能够重现该错误:

!function loop()
{
  const req = new XMLHttpRequest();
  const callback = e =>
  {
    if (req.readyState != 4)
      return;

    const isOnline = req.status == 200;
    console.log(isOnline ? "online" : "offline");
    req.abort();
    setTimeout(loop, isOnline ? 1000 : req.timeout);
  }

  req.onreadystatechange = callback
  req.timeout = 500;
  req.open('HEAD', 'http://localhost', true);
  req.send();
}()

推荐阅读