当前位置:首页 > JavaScript

js 实现 ping

2026-03-15 06:23:07JavaScript

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

js 实现 ping

使用 fetchXMLHttpRequest 测量请求时间

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

js 实现 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 实时延迟测试

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

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
分享给朋友:

相关文章

Vue实现ping

Vue实现ping

Vue实现ping功能的方法 在Vue中实现ping功能,可以通过调用操作系统的ping命令或使用JavaScript的WebSocket等方式。以下是几种常见的方法: 使用Node.js的chil…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现倒计时

js 实现倒计时

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

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…