当前位置:首页 > JavaScript

js实现ping

2026-04-04 02:22:46JavaScript

JavaScript 实现 Ping 功能

在 JavaScript 中实现 Ping 功能通常需要借助 Web API 或第三方服务,因为浏览器环境限制了直接 ICMP 请求。以下是几种常见方法:

使用 Image 对象检测网络延迟

通过加载一个微小图片并计算时间差来模拟 Ping:

function ping(url, callback) {
  const start = new Date().getTime();
  const img = new Image();

  img.onload = function() {
    const end = new Date().getTime();
    const latency = end - start;
    callback(null, latency);
  };

  img.onerror = function() {
    callback(new Error('Ping failed'));
  };

  img.src = url + '?t=' + start; // 添加时间戳避免缓存
}

使用 Fetch API 测量延迟

现代浏览器可以使用 Fetch API 测量 HTTP 请求延迟:

js实现ping

async function ping(url) {
  const start = performance.now();
  try {
    await fetch(url, { method: 'HEAD', cache: 'no-store' });
    const latency = performance.now() - start;
    return Math.round(latency);
  } catch (error) {
    return -1; // 表示失败
  }
}

使用 WebSocket 测量延迟

对于需要实时通信的场景,WebSocket 可以提供更精确的延迟测量:

function wsPing(url, callback) {
  const socket = new WebSocket(url);
  const start = Date.now();

  socket.onopen = function() {
    socket.send('ping');
  };

  socket.onmessage = function() {
    const latency = Date.now() - start;
    callback(null, latency);
    socket.close();
  };

  socket.onerror = function() {
    callback(new Error('WebSocket error'));
  };
}

使用第三方 Ping API

某些服务提供专门的 Ping API 端点:

js实现ping

async function apiPing() {
  const response = await fetch('https://api.example.com/ping');
  const data = await response.json();
  return data.latency;
}

注意事项

浏览器安全策略限制真正的 ICMP Ping,上述方法都是基于 HTTP/WebSocket 的近似实现

跨域请求可能被阻止,确保目标服务器支持 CORS 或使用同源 URL

对于 Node.js 环境,可以使用 netdgram 模块实现更底层的 Ping 功能

标签: jsping
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

原生js实现轮播图

原生js实现轮播图

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

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

链表实现js

链表实现js

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