当前位置:首页 > JavaScript

js 实现ping

2026-04-06 16:31:22JavaScript

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

使用 fetchperformance.now()

通过发送 HTTP 请求并计算响应时间模拟 ping

js 实现ping

async function ping(url) {
  const start = performance.now();
  try {
    const response = await fetch(url, { method: 'HEAD' });
    const end = performance.now();
    return end - start;
  } catch (error) {
    console.error('Ping failed:', error);
    return -1;
  }
}

// 使用示例
ping('https://example.com').then(duration => {
  console.log(`Ping time: ${duration}ms`);
});

使用 XMLHttpRequest

兼容性更好的传统方法:

js 实现ping

function ping(url) {
  const xhr = new XMLHttpRequest();
  const start = Date.now();

  xhr.open('HEAD', url);
  xhr.onload = function() {
    const duration = Date.now() - start;
    console.log(`Ping time: ${duration}ms`);
  };
  xhr.onerror = function() {
    console.error('Ping failed');
  };
  xhr.send();
}

// 使用示例
ping('https://example.com');

使用 WebSocket 测量延迟

适用于需要实时延迟测量的场景:

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

  socket.onopen = function() {
    const duration = Date.now() - start;
    console.log(`WebSocket connection time: ${duration}ms`);
    socket.close();
  };

  socket.onerror = function() {
    console.error('WebSocket connection failed');
  };
}

// 使用示例
wsPing('wss://echo.websocket.org');

使用 navigator.onLine 检测网络状态

简单检测设备是否在线:

function checkOnlineStatus() {
  return navigator.onLine ? 'Online' : 'Offline';
}

// 使用示例
console.log(`Network status: ${checkOnlineStatus()}`);

注意事项

  1. 浏览器安全策略可能限制跨域请求
  2. HEAD 请求可能不被所有服务器支持
  3. 实际网络延迟受多种因素影响
  4. WebSocket 方法需要服务器支持

这些方法提供了不同精度的网络延迟测量方案,可根据具体需求选择合适的方式。

标签: jsping
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js 实现链表

js 实现链表

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

js实现目录

js实现目录

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

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…