当前位置:首页 > JavaScript

js 实现 ping

2026-03-15 06:23:07JavaScript

在 JavaScript 中实现类似 ping 的功能通常需要结合网络请求或 WebSocket 来测量延迟。以下是几种常见方法:

使用 fetchXMLHttpRequest 测量请求时间

通过发送 HTTP 请求并计算响应时间,模拟 ping 的效果。注意跨域限制:

async function ping(url) {
  const start = performance.now();
  try {
    await fetch(url, { method: 'HEAD', mode: 'no-cors' });
    const latency = performance.now() - start;
    return { success: true, latency: latency.toFixed(2) + 'ms' };
  } catch (error) {
    return { success: false, error: error.message };
  }
}

// 使用示例
ping('https://example.com').then(console.log);

使用 Image 对象检测可达性

适用于简单检测目标是否可访问,但不提供精确延迟数据:

function pingViaImage(url) {
  return new Promise((resolve) => {
    const img = new Image();
    const start = Date.now();
    img.onload = img.onerror = () => {
      const latency = Date.now() - start;
      resolve({ success: true, latency: latency + 'ms' });
    };
    img.src = url + '?t=' + Date.now(); // 避免缓存
  });
}

WebSocket 实时延迟测试

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

js 实现 ping

function pingWebSocket(url) {
  return new Promise((resolve) => {
    const start = performance.now();
    const ws = new WebSocket(url);
    ws.onopen = () => {
      const latency = performance.now() - start;
      ws.close();
      resolve({ success: true, latency: latency.toFixed(2) + 'ms' });
    };
    ws.onerror = () => resolve({ success: false });
  });
}

注意事项

  • 浏览器安全策略可能阻止跨域请求,需确保目标服务器支持 CORS。
  • 测量结果包含网络延迟和服务器处理时间,非纯 ICMP ping。
  • 高频请求可能触发速率限制,建议添加间隔控制。

标签: jsping
分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js 实现分页

js 实现分页

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

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…