当前位置:首页 > JavaScript

js 实现 ping

2026-02-02 06:35:44JavaScript

使用 WebSocket 实现 Ping

在浏览器环境中,可以通过 WebSocket 发送消息并测量往返时间(RTT)来模拟 ping 功能。以下是一个示例代码:

function pingWebSocket(url) {
  const startTime = Date.now();
  const ws = new WebSocket(url);

  ws.onopen = () => {
    ws.send('ping');
    console.log('WebSocket connection established');
  };

  ws.onmessage = () => {
    const rtt = Date.now() - startTime;
    console.log(`Ping time: ${rtt}ms`);
    ws.close();
  };

  ws.onerror = (error) => {
    console.error('WebSocket error:', error);
  };
}

使用 Fetch API 实现 Ping

通过 Fetch API 测量 HTTP 请求的响应时间:

js 实现 ping

async function pingFetch(url) {
  const startTime = Date.now();
  try {
    const response = await fetch(url, { method: 'HEAD' });
    const rtt = Date.now() - startTime;
    console.log(`Ping time: ${rtt}ms`);
    return rtt;
  } catch (error) {
    console.error('Ping failed:', error);
    return null;
  }
}

使用 XMLHttpRequest 实现 Ping

传统 XMLHttpRequest 也可以用于测量请求时间:

function pingXHR(url) {
  const startTime = Date.now();
  const xhr = new XMLHttpRequest();

  xhr.open('HEAD', url);
  xhr.onload = () => {
    const rtt = Date.now() - startTime;
    console.log(`Ping time: ${rtt}ms`);
  };

  xhr.onerror = () => {
    console.error('Ping failed');
  };

  xhr.send();
}

使用 Performance API 获取更精确时间

Performance API 可以提供更高精度的时间测量:

js 实现 ping

async function pingWithPerformance(url) {
  const start = performance.now();
  try {
    await fetch(url, { method: 'HEAD' });
    const duration = performance.now() - start;
    console.log(`Ping time: ${duration.toFixed(2)}ms`);
    return duration;
  } catch (error) {
    console.error('Ping failed:', error);
    return null;
  }
}

注意事项

这些方法都会受到浏览器同源策略的限制。对于跨域请求,服务器需要设置适当的 CORS 头。

WebSocket 方法需要服务器支持 WebSocket 协议,其他 HTTP 方法需要服务器响应 HEAD 或 GET 请求。

这些实现测量的是应用层协议的响应时间,不是真正的 ICMP ping,但可以满足大多数 Web 应用的类似需求。

标签: jsping
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现vue路由

js实现vue路由

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