39.轮询

书诚小驿2025/03/05前端面经Http

轮询的概念 轮询(Polling) 是一种客户端主动向服务器发起周期性请求以获取最新数据的技术,分为两种模式:

短轮询(Short Polling): 客户端按固定间隔(如每秒)发送请求,服务器立即返回当前数据(无论是否有更新)。 特点:实现简单,但频繁请求可能导致资源浪费。

长轮询(Long Polling): 客户端发送请求后,服务器保持连接挂起,直到数据更新或超时(如 30 秒)才响应。客户端收到响应后立即发起新请求。 特点:减少无效请求,但服务器需维护更多并发连接。

1、短轮询(JavaScript)

// 使用 setInterval 定时请求
let pollInterval = setInterval(() => {
  fetch("/api/data")
    .then((response) => response.json())
    .then((data) => updateUI(data));
}, 5000); // 每5秒请求一次

// 停止轮询
clearInterval(pollInterval);

2、长轮询(JavaScript)

function longPoll() {
  fetch("/api/data")
    .then((response) => response.json())
    .then((data) => {
      updateUI(data);
      longPoll(); // 立即发起下一次请求
    })
    .catch(() => {
      setTimeout(longPoll, 1000); // 失败后延迟重试
    });
}
longPoll(); // 启动长轮询
类型优点缺点
短轮询实现简单,客户端逻辑统一高延迟(依赖间隔),资源浪费(频繁请求)
长轮询减少无效请求,响应更快服务器连接压力大,实现复杂度较高
最后更新时间' 2025/3/25 07:37:15