当前位置:首页 > 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 请求的响应时间:

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 可以提供更高精度的时间测量:

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 应用的类似需求。

js 实现 ping

标签: jsping
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js画图实现

js画图实现

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

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…