当前位置:首页 > 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 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…