当前位置:首页 > JavaScript

js 实现 ping

2026-04-06 23:52:19JavaScript

在 JavaScript 中实现类似网络 ping 的功能通常通过发送 HTTP 请求或使用 WebSocket 来检测网络延迟和连通性。以下是几种常见方法:

js 实现 ping

使用 fetch API 测量延迟

通过发送 HTTP 请求并计算响应时间模拟 ping

js 实现 ping

async function ping(url) {
  const start = performance.now();
  try {
    const response = await fetch(url, { method: 'HEAD', mode: 'no-cors' });
    const end = performance.now();
    return end - start; // 返回延迟时间(毫秒)
  } catch (error) {
    return -1; // 请求失败
  }
}

// 使用示例
ping('https://example.com').then(delay => {
  console.log(delay >= 0 ? `延迟: ${delay}ms` : '请求失败');
});

使用 Image 对象检测连通性

适用于简单连通性测试,但不返回具体延迟:

function pingViaImage(url) {
  return new Promise(resolve => {
    const img = new Image();
    const start = Date.now();
    img.onload = img.onerror = () => {
      resolve(Date.now() - start);
    };
    img.src = `${url}?t=${Date.now()}`; // 避免缓存
  });
}

使用 WebSocket 实现实时 ping

适用于需要持续监测的场景:

function websocketPing(url) {
  const ws = new WebSocket(url);
  const start = performance.now();
  ws.onopen = () => {
    const latency = performance.now() - start;
    console.log(`WebSocket 延迟: ${latency}ms`);
    ws.close();
  };
  ws.onerror = () => console.log('连接失败');
}

注意事项

  • 跨域限制:普通 HTTP 请求受同源策略限制,可通过 mode: 'no-cors' 发送简单请求,但无法读取响应内容。
  • 准确性:网络波动可能导致单次测量不准确,建议多次测量取平均值。
  • 服务端支持:部分服务器可能拒绝 HEAD 请求,需根据实际目标调整方法。

以上方法可根据具体需求选择,HTTP 方案适合简单检测,WebSocket 适合需要双向通信的场景。

标签: jsping
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…