首页 > 解决方案 > 每 X 秒检查一次 URL 状态会不会有任何问题?

问题描述

所以我们有一个逻辑,我们将每 15 秒检查一次 URL 的状态,如下所示:

const http = new XMLHttpRequest();
const alive = (url) => {
  http.open("HEAD", url, false);
  http.send();
  return http.status !== 404;
};

此 url 计划仅在一天中的某个时间工作一段时间,我们的应用程序必须检测它何时返回200。完成后,我们将显示一个包含url内容的 iframe(并清除间隔)。因此,只要它仍然返回 a 404,我们就会显示一个“即将到来的”图像。

继续做这个检查可以吗?我们不会在某个时候在 url 上遇到太多请求错误吗?意识到我们可能无法控制该 url 的服务器。假设大约 1000 人将访问进行检查的页面。他们中的一些人可能会更早地访问该页面并留在那里。该页面将每 15 秒开始执行此检查,直到该页面url变为活动状态(这可能需要在它们登陆页面的那一刻之后数小时)。

标签: javascriptxmlhttprequestsetinterval

解决方案


要确定某物是否还活着,您可能想要返回http.status === 200。这意味着如果说存在内部服务器错误,例如错误 500,则假定它不存在。

对于轮询方法,如果您有很多用户,则任何间隔都可能过于频繁。

可扩展性的最佳选择是拥有一个基于套接字的通信系统。正如您所提到的,您正在使用 node.js。您可以考虑使用socket.io。当您“上线”时,您可以向所有连接的客户端发出一个事件。


推荐阅读