精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

通過JS獲取你當前的網絡狀況?建議大家學一學

開發 前端
想要在Web端檢測網速,其實很簡單,有一個全局的對象——navigation,我們來看看它的身上都有哪些東西:

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心

檢測網速

想要在Web端檢測網速,其實很簡單,有一個全局的對象——navigation,我們來看看它的身上都有哪些東西:

圖片圖片

屬性

描述

類型

downlink

有效帶寬估算(單位:兆比特/秒)

number

effectiveType

effectiveType

slow-2g/2g/3g/4g

rtt

當前連接下評估的往返時延

number

saveData

用戶代理是否設置了減少數據使用的選項

boolean

useNetwork

我們可以自定義一個hook,用來獲取網頁當前的網絡狀態~需要具備以下要素:

  • 1、返回的數據所需的ts類、監聽網絡變化的enum
  • 2、獲取網絡狀態
  • 3、監聽網絡變化,并實時更新最新的網絡狀態

第一步:所需的ts類型

說說NetworkState的各個參數:

  • since:記錄當時檢測的時間
  • oline:記錄是否有網絡
  • rtt:記錄時延
  • downlink:記錄帶寬
  • saveData:記錄用戶代理是否設置了減少數據使用
  • effectiveType:網絡連接類型
// hook返回的值
interface NetworkState {
  since?: Date;
  online?: boolean;
  rtt?: number;
  downlink?: number;
  saveData?: boolean;
  effectiveType?: string;
}

// 監聽網絡變化的事件名enum
enum NetworkEventType {
  ONLINE = 'online',
  OFFLINE = 'offline',
  CHANGE = 'change',
}

第二步:獲取網絡狀態

function getConnection() {
  const nav = navigator as any;
  if (typeof nav !== 'object') return null;
  return nav.connection || nav.mozConnection || nav.webkitConnection;
}

function getConnectionProperty(): NetworkState {
  const c = getConnection();
  if (!c) return {};
  return {
    rtt: c.rtt,
    saveData: c.saveData,
    downlink: c.downlink,
    effectiveType: c.effectiveType,
  };
}

第三步:實時更新網絡狀態

unction useNetwork(): NetworkState {
  const [state, setState] = useState(() => {
    return {
      since: undefined,
      online: navigator?.onLine,
      ...getConnectionProperty(),
    };
  });

  useEffect(() => {
    const onOnline = () => {
      setState((prevState) => ({
        ...prevState,
        online: true,
        since: new Date(),
      }));
    };

    const onOffline = () => {
      setState((prevState) => ({
        ...prevState,
        online: false,
        since: new Date(),
      }));
    };

    const onConnectionChange = () => {
      setState((prevState) => ({
        ...prevState,
        ...getConnectionProperty(),
      }));
    };

    window.addEventListener(NetworkEventType.ONLINE, onOnline);
    window.addEventListener(NetworkEventType.OFFLINE, onOffline);

    const connection = getConnection();
    connection?.addEventListener(NetworkEventType.CHANGE, onConnectionChange);

    return () => {
      window.removeEventListener(NetworkEventType.ONLINE, onOnline);
      window.removeEventListener(NetworkEventType.OFFLINE, onOffline);
      connection?.removeEventListener(NetworkEventType.CHANGE, onConnectionChange);
    };
  }, []);

  return state;
}

完整代碼

import { useEffect, useState } from 'react';

export interface NetworkState {
  since?: Date;
  online?: boolean;
  rtt?: number;
  downlink?: number;
  saveData?: boolean;
  effectiveType?: string;
}

enum NetworkEventType {
  ONLINE = 'online',
  OFFLINE = 'offline',
  CHANGE = 'change',
}

function getConnection() {
  const nav = navigator as any;
  if (typeof nav !== 'object') return null;
  return nav.connection || nav.mozConnection || nav.webkitConnection;
}

function getConnectionProperty(): NetworkState {
  const c = getConnection();
  if (!c) return {};
  return {
    rtt: c.rtt,
    saveData: c.saveData,
    downlink: c.downlink,
    effectiveType: c.effectiveType,
  };
}

function useNetwork(): NetworkState {
  const [state, setState] = useState(() => {
    return {
      since: undefined,
      online: navigator?.onLine,
      ...getConnectionProperty(),
    };
  });

  useEffect(() => {
    const onOnline = () => {
      setState((prevState) => ({
        ...prevState,
        online: true,
        since: new Date(),
      }));
    };

    const onOffline = () => {
      setState((prevState) => ({
        ...prevState,
        online: false,
        since: new Date(),
      }));
    };

    const onConnectionChange = () => {
      setState((prevState) => ({
        ...prevState,
        ...getConnectionProperty(),
      }));
    };

    window.addEventListener(NetworkEventType.ONLINE, onOnline);
    window.addEventListener(NetworkEventType.OFFLINE, onOffline);

    const connection = getConnection();
    connection?.addEventListener(NetworkEventType.CHANGE, onConnectionChange);

    return () => {
      window.removeEventListener(NetworkEventType.ONLINE, onOnline);
      window.removeEventListener(NetworkEventType.OFFLINE, onOffline);
      connection?.removeEventListener(NetworkEventType.CHANGE, onConnectionChange);
    };
  }, []);

  return state;
}

export default useNetwork;


責任編輯:武曉燕 來源: 前端之神
相關推薦

2024-04-16 00:13:52

JS網絡狀態ts類

2017-03-19 22:13:10

WebAssemblyJavaScript編程

2020-04-01 17:50:02

Python編程語言

2011-08-22 16:39:15

iOS內存

2011-05-17 10:05:50

CSS

2013-01-25 13:55:26

Surface RT

2021-03-10 09:40:50

Linux命令文件

2018-10-15 17:31:00

網絡安全病毒網絡攻擊

2012-04-20 13:27:17

NFC

2010-06-03 11:39:28

網絡性能

2021-04-15 09:18:57

鴻蒙HarmonyOS應用

2023-09-04 00:03:08

2020-05-25 10:05:26

Python 開發程序員

2011-08-08 17:59:22

UIWebView網絡網頁

2022-06-07 09:59:21

網絡安全安全漏洞

2021-02-03 09:59:02

鴻蒙HarmonyOS應用開發

2019-03-19 15:28:30

Linux 系統 數據

2023-10-27 11:01:31

網絡性能VLAN

2021-04-13 08:17:40

中國電信中國移動運營商

2021-05-27 10:07:49

網絡安全主管網絡安全網絡攻擊
點贊
收藏

51CTO技術棧公眾號

国产高清免费av| 国产肥白大熟妇bbbb视频| av在线资源| 欧美激情中文不卡| 91视频免费在线| 伊人国产在线观看| 国产影视一区| 日韩午夜在线播放| 国内外免费激情视频| 精品孕妇一区二区三区| 97久久久精品综合88久久| 成人黄色免费在线观看| www成人在线| 亚洲mv大片欧洲mv大片| 日韩精品免费综合视频在线播放| 亚洲综合婷婷久久| 欧美少妇网站| 樱花草国产18久久久久| 日本欧美色综合网站免费| 精品黑人一区二区三区国语馆| 日韩电影av| 亚洲视频资源在线| 日韩电影在线播放| 蜜桃久久一区二区三区| 国产在线精品一区二区不卡了 | 人妻丰满熟妇av无码久久洗澡| 免费一区二区三区四区| 日本道色综合久久| 国产精品专区在线| 在线免费av导航| 亚洲欧美在线aaa| 日韩免费电影一区二区| 日本黄色免费视频| 不卡一区二区在线| 91在线在线观看| 夜夜爽8888| 丝袜美腿亚洲色图| 欧美一级淫片播放口| 国产亚洲精久久久久久无码77777| 日韩在线观看| 中文日韩在线视频| 99国产精品免费| 国产欧美日韩精品一区二区三区| 日韩国产欧美区| 中文字幕 日本| 红杏一区二区三区| 亚洲国产精品va在线观看黑人| 中文字幕人妻无码系列第三区| 24小时成人在线视频| 欧美精品三级在线观看| 日本一本高清视频| 国产又粗又猛又爽又黄91| 男女av一区三区二区色多| 欧美激情一区二区久久久| 免费在线观看h片| 在线国产一区| 欧美xxxx18国产| 91视频免费在线看| 韩国久久久久| 98视频在线噜噜噜国产| 国产网站在线看| 在线亚洲精品| 日韩av电影国产| 销魂美女一区二区| 麻豆精品一二三| 成人乱人伦精品视频在线观看| 在线黄色av网站| 激情综合亚洲精品| 动漫一区二区在线| 西西人体44www大胆无码| 91在线观看一区二区| 欧美精品亚洲精品| 91高清在线视频| 亚洲男人的天堂av| 成人免费视频91| 一本大道色婷婷在线| 欧美自拍偷拍午夜视频| 国产性生活一级片| 国产一区调教| 在线日韩中文字幕| 精品国产乱码久久久久久鸭王1| 欧美精品国产一区| 清纯唯美亚洲综合| 国产精品亚洲lv粉色| 国产.欧美.日韩| 欧美人xxxxx| 黄色av免费在线| 亚洲第一综合色| 凹凸日日摸日日碰夜夜爽1| 久久久加勒比| 亚洲国产美女久久久久| 一本在线免费视频| 伊人久久亚洲美女图片| 国产精品欧美一区二区| 亚洲大尺度视频| 欧美精彩视频一区二区三区| 97碰在线视频| www.久久.com| 日韩av在线最新| 日韩免费av一区| 亚洲少妇一区| 91天堂在线观看| 免费福利在线观看| 亚洲最新视频在线观看| 天天爱天天操天天干| 国产精品毛片久久久| 中文字幕亚洲色图| 久久久精品免费看| 国产成人av在线影院| 午夜欧美性电影| av资源在线| 日韩一区二区三区av| 2019男人天堂| 午夜在线精品| 国产98在线|日韩| 国产美女av在线| 日本韩国精品一区二区在线观看| 国产艳妇疯狂做爰视频| 亚洲成人二区| 国产精品三级在线| 你懂的在线播放| 污片在线观看一区二区| 秋霞午夜鲁丝一区二区| 日韩精品欧美激情一区二区| 国产成人精品电影| 色猫av在线| 午夜精品久久久久久久| 色哟哟在线观看视频| 亚洲第一天堂| 成人午夜小视频| 国产毛片av在线| 色综合婷婷久久| 六十路息与子猛烈交尾| 一区视频在线| 国产乱码一区| 多野结衣av一区| 亚洲第一免费播放区| 国产亚洲精品久久久久久打不开| 国产乱子伦视频一区二区三区 | 六月丁香久久丫| 欧美黑人巨大xxx极品| 精品久久久无码中文字幕| 中文字幕一区二区三区乱码在线| 中文字幕国内自拍| 欧美精品系列| 国产精品美女视频网站| 自拍视频在线免费观看| 欧美色老头old∨ideo| 美国美女黄色片| 久久精品国产99国产精品| 亚洲午夜激情| 成人噜噜噜噜| 久久国产精品网站| 欧美一区二区三区激情| 欧美午夜激情在线| 国产精品成人一区二区三区电影毛片 | 中文字幕欧美日韩一区二区| 久久精品国产福利| 超在线视频97| 亚洲精品一级片| 午夜精品久久久久| www.狠狠爱| 精品在线亚洲视频| 成人av在线不卡| 色婷婷精品视频| 国产精品高清在线| 韩国av网站在线| 精品免费99久久| www欧美在线| 欧美激情一区二区| 日本人dh亚洲人ⅹxx| 999亚洲国产精| 色一情一乱一伦一区二区三区 | 国产精品青青草| 亚洲天堂电影| 久久综合电影一区| 日本精品一二区| 欧美日韩三级一区二区| 久久国产精品波多野结衣av| 91丨porny丨蝌蚪视频| 九九热免费精品视频| 午夜天堂精品久久久久| 免费在线观看一区二区| 96视频在线观看欧美| 国内精品一区二区三区| wwwww在线观看免费视频| 日韩欧美激情在线| 国产乱码77777777| 亚洲一区免费视频| 免费看的黄色录像| aaa国产一区| 日韩av片专区| 国产精品一二| 视频一区二区视频| 亚洲婷婷丁香| 999国内精品视频在线| 九色成人搞黄网站| 97超级碰碰碰久久久| 精品国产99久久久久久| 日韩精品视频在线| 性少妇videosexfreexxx片| 色婷婷亚洲综合| 精品一区二区三区人妻| 国产精品大尺度| 制服丝袜第二页| 国产精品99久久久久久宅男| 国产精品动漫网站| 激情五月***国产精品| 亚洲一区二区免费视频软件合集| 爽爽窝窝午夜精品一区二区| 3d动漫啪啪精品一区二区免费 | av2020不卡| 久久亚洲影音av资源网| 福利视频在线导航| 日韩成人黄色av| 亚洲国产精彩视频| 777亚洲妇女| 亚洲视频久久久| 色婷婷精品久久二区二区蜜臀av | 一本色道久久精品| 男人草女人视频| 亚洲成人tv| 在线不卡视频一区二区| 欧美一区电影| 日本中文不卡| 中文字幕av一区二区三区人| 久久99九九| 久久精品国产亚洲5555| 国产精品xxxx| 中文字幕日韩高清在线| 91亚洲va在线va天堂va国 | 三级欧美在线一区| 97成人在线观看视频| 亚洲免费一区二区| 久草青青在线观看| 午夜在线观看免费一区| 青青草原成人网| 亚洲欧美日韩一区在线观看| 免费看国产一级片| av成人激情| 一本大道熟女人妻中文字幕在线| av不卡免费看| 无码精品国产一区二区三区免费| 国产美女精品| 亚洲人成无码www久久久| 老司机一区二区三区| 日韩精品一区二区三区色欲av| 午夜亚洲影视| 亚洲不卡视频在线| 久草在线在线精品观看| 日本高清一区二区视频| 国产一区二区网址| av电影中文字幕| av一本久道久久综合久久鬼色| 成人性生活免费看| 久久久亚洲欧洲日产国码αv| 亚洲精品国产一区黑色丝袜| 欧美国产在线观看| 国产第一页浮力| 亚洲午夜激情av| 日韩综合在线观看| 欧美日韩成人一区二区| 国产情侣激情自拍| 精品久久免费看| 日本不卡视频一区二区| 中文字幕国产亚洲| 在线欧美三级| 4p变态网欧美系列| 成人黄色毛片| 成人18视频| 你微笑时很美电视剧整集高清不卡| 日韩激情视频| 欧美精品啪啪| 日韩免费毛片视频| 久久99精品国产麻豆婷婷洗澡| 性xxxxxxxxx| 99视频精品免费视频| 国产又粗又长又硬| 亚洲国产精品欧美一二99| 日本黄色一级视频| 91精品国产综合久久久久久久 | av天堂一区二区三区| 亚洲韩国日本中文字幕| 高清性色生活片在线观看| 欧美人在线观看| 天天综合网站| 超碰国产精品久久国产精品99| 精品在线99| 成人手机在线播放| 日韩精品色哟哟| 香蕉视频免费网站| 国产精品美女久久久久久久| 亚洲激情视频一区| 欧美三级欧美一级| 香蕉人妻av久久久久天天| 日韩在线欧美在线国产在线| 国产ktv在线视频| 91日韩在线视频| 九九热精品视频在线观看| 91网站在线观看免费| 免费精品视频在线| 给我免费观看片在线电影的| 亚洲欧美视频在线观看视频| 精品黑人一区二区三区| 日韩欧美国产午夜精品| 91se在线| 日韩av电影手机在线| 成人激情自拍| 佐佐木明希av| 蜜桃精品在线观看| 男女黄床上色视频| 亚洲一区二区三区在线| 国产伦一区二区| 在线日韩欧美视频| 88xx成人免费观看视频库| 精品久久久久久中文字幕动漫| 久久久久久美女精品| 成年人在线观看视频免费| www.日韩大片| 久久精品无码人妻| 日韩欧美三级在线| 在线h片观看| 91色视频在线导航| 亚洲精品二区三区| 在线观看国产一级片| 亚洲国产电影在线观看| 欧美日韩 一区二区三区| 亚洲欧美另类国产| 三级中文字幕在线观看| 国产在线一区二区三区四区| 欧美网站在线| 在线中文字日产幕| 一区二区三区成人| 国产suv精品一区二区69| 久久精品久久久久| 综合久久av| 欧美日韩一级在线| 国产最新精品免费| 我要看黄色一级片| 91精品国产综合久久久久| 国产美女福利在线| 91网免费观看| 激情综合激情| 一级国产黄色片| 狠狠久久五月精品中文字幕| 天堂а√在线8种子蜜桃视频 | 超碰在线观看91| 永久免费看mv网站入口亚洲| 91tv亚洲精品香蕉国产一区| 色视频一区二区三区| 激情图区综合网| 久久黄色免费视频| 亚洲国产欧美一区| 小黄鸭精品aⅴ导航网站入口| 日韩欧美99| 狠狠色丁香婷综合久久| 久久成人国产精品入口| 日韩国产欧美区| 国精品产品一区| 视色,视色影院,视色影库,视色网| 国产成人免费视频精品含羞草妖精| 久久久久99精品成人片毛片| 亚洲激情电影中文字幕| 超级碰碰久久| 制服国产精品| 国产91丝袜在线播放0| 亚洲第一在线播放| 中文字幕精品一区久久久久| 欧美另类中文字幕| 国产一区二区网| 欧美国产激情一区二区三区蜜月| 国产精品久久久久久久久久久久久久久久 | 国产福利一区二区三区视频在线| 日韩欧美国产亚洲| 一夜七次郎国产精品亚洲| 国产精品免费精品自在线观看 | 欧美aaaaa性bbbbb小妇| 五月婷婷综合色| 国产精品香蕉一区二区三区| 成人午夜淫片100集| zzjj国产精品一区二区| 国产调教精品| 手机免费av片| 黄色成人在线播放| 黄色在线论坛| 欧美精品成人一区二区在线观看| 国产一区二区三区综合| av黄色在线看| 久久久国产精品免费| 日本在线中文字幕一区| www.超碰97.com| 日韩欧美视频一区二区三区| 成人在线免费看黄| 欧美重口乱码一区二区| 国产成人免费网站| 成人黄色免费网| 97婷婷大伊香蕉精品视频| 91久久电影| 波多野在线播放| 亚洲大胆人体av|