监听设备网络状态

概述

在前端应用中监听网络状态是一个常见的需求,可以用于优化离线体验、提示用户网络变化等。

场景

  • 移动端项目,有大量的图片需要访问,在4g或者wifi的网络状态下做不同的优化
  • 在后台系统访问,有时候会遇到断网或者网络不好得时候,所以这里需求是在请求发送之前判断网络环境,如果断网给出提示,弱网超过一定时间提示请求超时

统一封装网络状态监控函数

属性概念

当前网络连接的估计下行速度(单位为 Mbps)

effectiveType

当前网络连接的估计速度类型(如 slow-2g、2g、3g、4g 等)

rtt

当前网络连接的估计往返时间(单位为毫秒),表示设备当前的往返延迟时间(Round-Trip Time),以毫秒为单位。它是从设备发送数据到服务器并返回的时间。

saveData

是否处于数据节省模式,表示用户设备当前是否处于节省数据模式。可能的取值为 true(用户启用了节省数据模式)或 false(用户未启用节省数据模式)

实现

js 复制代码
function getNetWorkInfo() {
    let info;
    if (navigator.onLine) {
        info = {
            status: "online",
            type: navigator.connection.effectiveType,
            rtt: navigator.connection.rtt,
            downlink: navigator.connection.downlink,
        };
    } else {
        info = {
            status: "offline",
        };
    }
    return info;
}

window.addEventListener("online", () => {
    getNetWorkInfo();
});
window.addEventListener("offline", () => {
    getNetWorkInfo();
});
navigator.connection.addEventListener("change", () => {
    getNetWorkInfo();
});
相关推荐
江湖有缘1 分钟前
Docker部署music-tag-web音乐标签编辑器
前端·docker·编辑器
hzb666663 分钟前
unictf2026
开发语言·javascript·安全·web安全·php
恋猫de小郭1 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅8 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅9 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端