当前位置:首页 > 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 请求延迟:

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 端点:

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

js实现ping

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

标签: jsping
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现图

js实现图

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

js实现目录

js实现目录

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

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…