精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕va一区二区三区| 久久一区二区中文字幕| 亚洲电影一区二区| 久久这里精品国产99丫e6| 丁香社区五月天| 999成人精品视频线3| 精品人在线二区三区| 国产欧美在线一区| www国产在线| 久久久蜜桃一区二区人| 久久久成人精品视频| 视频免费在线观看| 伊人亚洲精品| 日韩欧中文字幕| 九一免费在线观看| 国产精品免费观看| 成人av在线资源网| 色综合咪咪久久网| 日韩欧美aaa| 人人妻人人澡人人爽精品欧美一区| 亚洲黄色a级片| 日韩成人免费电影| 97在线精品视频| 国产大学生自拍| 国产免费av一区二区三区| 精品国产欧美一区二区| 成人日韩在线视频| 午夜日韩成人影院| 亚洲国产视频一区| aaa免费在线观看| 国产色在线 com| 97精品久久久久中文字幕| 成人久久精品视频| 中文无码精品一区二区三区| 国产精品人人爽人人做我的可爱 | 五月激情婷婷网| 国内不卡的二区三区中文字幕| 国产www精品| 日产电影一区二区三区| 99re这里只有| freexxx性亚洲精品| 亚洲国产精品精华液ab| 久久精品国产美女| 亚洲精品久久久蜜桃动漫| 久久99国产精品久久| 国产成人午夜视频网址| av资源免费观看| 最新成人av网站| 久久久欧美精品| 国产亚洲自拍av| 国模 一区 二区 三区| 久热99视频在线观看| 欧美xxxooo| 欧美黄色大片在线观看| 一区二区在线视频| 国产视频123区| 成人精品视频| 日韩中文字幕视频在线| 国产小视频你懂的| 久久久国产精品| 久久综合久中文字幕青草| 可以免费看av的网址| 久久综合电影| 另类图片亚洲另类| 青青草激情视频| 亚洲欧美一区二区三区| 欧美黄色一区二区| 久久国产精品99国产精| 校园春色 亚洲| 激情六月综合| 91a在线视频| 欧美一区免费看| 美国一区二区三区在线播放| 成人激情视频小说免费下载| 国产免费黄色片| 国产suv精品一区二区6| 精品一区二区三区视频日产| 日本一二三区在线视频| 国产清纯白嫩初高生在线观看91| 亚洲午夜精品国产| 1769免费视频在线观看| 精品国产乱码久久久久久虫虫漫画| 日本wwww视频| 色综合.com| 精品人伦一区二区色婷婷| 伊人网在线视频观看| 色综合久久网| 国内伊人久久久久久网站视频| 国产精品久久久久久人| 韩国av一区二区三区四区| 国产欧美韩日| 在线免费av电影| 亚洲国产精品天堂| 亚洲欧洲日本精品| www国产精品| 国产午夜精品免费一区二区三区 | 欧美福利在线播放网址导航| 亚洲图片欧美日产| 欧洲猛交xxxx乱大交3| 午夜在线精品| 亚洲a级在线播放观看| 无码国产精品高潮久久99| 国产精品私人自拍| 成人免费在线视频播放| 婷婷午夜社区一区| 欧美www视频| 伊人影院综合网| 狠狠爱综合网| 国产精品网址在线| 五月婷婷在线观看视频| 成人免费小视频| 国产免费黄视频| 色噜噜成人av在线| 亚洲色图综合久久| 精品视频一区二区在线观看| 奇米在线7777在线精品| 国产99视频精品免费视频36| seseavlu视频在线| 精品福利在线视频| 国产探花一区二区三区| 成人一区二区| 欧美一区二区色| 精品人妻少妇嫩草av无码专区 | 91日韩中文字幕| 日韩**一区毛片| 国产一区国产精品| 91在线中字| 欧美三级在线看| 四虎影成人精品a片| 亚洲福利久久| 99re视频| 中文av资源在线| 69堂精品视频| 少妇的滋味中文字幕bd| 欧美亚洲在线| 免费看国产精品一二区视频| 久久精品国产精品青草色艺| 美女欧美视频在线观看免费| 午夜私人影院久久久久| 9191在线视频| 亚洲网色网站| 亚洲伊人久久综合| 超碰在线caoporen| 91精品国产综合久久福利| 疯狂撞击丝袜人妻| 狠狠久久亚洲欧美| 一区二区三区日韩视频| 欧美亚洲人成在线| 日韩有码在线视频| 国产精品久久久久久免费免熟 | 欧美久久综合性欧美| 欧美gv在线| 日韩av综合中文字幕| 国产精品美女久久久久av爽| 成人激情文学综合网| 日韩国产一级片| 日本一道高清一区二区三区| 18久久久久久| 毛片网站在线| 欧美日韩在线三级| 全网免费在线播放视频入口| 国产精品自在在线| 老司机激情视频| 精品福利网址导航| 欧美中文字幕在线视频| 精品人妻一区二区免费| 国产日产一区二区三区| 欧美精品在线观看播放| 国产黄在线免费观看| 国产精品123区| 欧美日韩不卡在线视频| 日本三级久久| 国产日韩专区在线| 午夜伦理在线视频| 日韩电影免费观看在线观看| 国产免费a视频| 国产精品福利一区二区三区| 一级网站在线观看| 亚洲美女色禁图| 欧美日韩在线观看一区二区三区| 欧美与亚洲与日本直播| 久久亚洲国产精品| 人妻一区二区三区四区| 91国在线观看| 欧美爱爱免费视频| 成人福利视频在线看| 久久精品午夜福利| 亚洲精品极品少妇16p| 国产精品免费看一区二区三区| 136福利第一导航国产在线| 亚洲人成电影在线播放| 国产精品无码在线播放| 午夜精品久久久久久久| 中文字幕伦理片| 成人一区二区三区视频在线观看| 任你操这里只有精品| 亚洲女同中文字幕| 久久久久久九九九九| 国内爆初菊对白视频| 精品一区二区三| 91视频免费在线| 日韩伦理在线一区| 欧美另类暴力丝袜| 岛国在线视频免费看| 精品免费日韩av| 日韩成年人视频| 亚洲丝袜制服诱惑| b站大片免费直播| 成人白浆超碰人人人人| 国产小视频精品| 国产欧美精品久久| 一二三在线视频| 色综合色综合| 人禽交欧美网站免费| а√中文在线天堂精品| 国产日韩精品在线播放| 在线能看的av网址| 日韩欧美在线视频观看| 中文字幕无码日韩专区免费 | 国产在线不卡精品| 亚洲最大成人| 欧美激情videoshd| 国产在线1区| 国产一区二区三区视频| 日本久久一级片| 欧美一区三区二区| 中文字幕人妻一区二区三区视频 | 亚洲成av人片乱码色午夜| 91精品国产综合久久婷婷香蕉| 69国产精品视频免费观看| 亚洲一区二区精品视频| 国产老头老太做爰视频| 国产精品丝袜在线| 亚洲av熟女国产一区二区性色| 99久久久久久99| 黑森林av导航| 国产精品 欧美精品| 男女污污视频网站| 精品无人码麻豆乱码1区2区| 国产又大又黄又粗又爽| 日韩国产欧美在线观看| aa免费在线观看| 99热在线精品观看| 婷婷五月综合缴情在线视频| 国产精品地址| 91午夜在线观看| 国内久久精品| 免费视频爱爱太爽了| 欧美三级第一页| 欧美视频在线第一页| 黑丝一区二区三区| 日韩av新片网| 在线亚洲免费| 日韩一级免费在线观看| 日韩和欧美一区二区| xxxx一级片| 久久精品国产亚洲aⅴ| 午夜啪啪小视频| 国产麻豆午夜三级精品| 成人啪啪18免费游戏链接| 成人午夜看片网址| av网站有哪些| 国产清纯美女被跳蛋高潮一区二区久久w| 久久婷婷五月综合| 密臀av在线播放| 精品国产sm最大网站免费看| 丁香花免费高清完整在线播放| 精品国产凹凸成av人网站| 深夜福利视频网站| 亚洲欧美国产一区二区三区| 免费黄网站在线观看| 中文字幕av一区二区| 国产在线二区| 91av国产在线| 欧美在线va视频| 91色p视频在线| 99久久香蕉| 九九九热999| 欧美精选视频在线观看| 天天做天天爱天天高潮| 韩日视频一区| 黄色动漫在线免费看| 蜜臀精品一区二区三区在线观看| 日本网站在线看| 成人av在线电影| jizz中文字幕| 一区二区三区影院| 国产区一区二区三| 欧美日韩高清一区二区不卡 | 精品精品欲导航| 全部免费毛片在线播放网站| www.日本久久久久com.| 金瓶狂野欧美性猛交xxxx| 青青草原一区二区| 成人永久在线| 牛人盗摄一区二区三区视频| 国产精品久久久久久影院8一贰佰| 免费看毛片的网址| 久久精品国产在热久久| 亚洲av成人无码一二三在线观看| 国产性色一区二区| 亚洲bt天天射| 天堂8中文在线最新版在线| 国产精品视频一区二区三区四 | 国产传媒免费在线观看| 午夜亚洲国产au精品一区二区| 亚洲天堂视频在线| 日韩精品免费在线播放| 欧美成人hd| 日韩美女免费观看| 91精品啪在线观看国产爱臀 | 韩日视频在线| 欧美精品videosex极品1| 国产电影一区二区三区爱妃记| 国产精品二区三区四区| 久久一区91| 亚洲成人福利在线观看| 成人高清在线视频| 91麻豆精品成人一区二区| 色综合中文字幕| 涩涩视频免费看| 欧美另类高清videos| 日本在线视频一区二区| 久久综合精品一区| 极品尤物久久久av免费看| 色网站在线视频| 欧美极品aⅴ影院| 免费av网站在线| 亚洲国产精品久久| 人人超在线公开视频| 成人欧美一区二区三区黑人| 欧美少妇xxxx| 少妇高清精品毛片在线视频| av午夜一区麻豆| 日本一区二区三区四区五区 | 无码av免费精品一区二区三区| 国产精品久久久久久亚洲毛片 | 精品国产乱码久久久久久蜜臀| 麻豆tv入口在线看| 国产在线播放91| 婷婷丁香综合| 999这里有精品| 国产精品视频观看| 中文字幕自拍偷拍| 中文字幕欧美日韩| 在线成人视屏| 三级三级久久三级久久18| 久久午夜电影| 一级黄色片网址| 欧美综合一区二区| 东凛在线观看| 国产精品麻豆va在线播放| 成人激情开心网| 玖玖爱视频在线| 中文字幕日韩av资源站| 一级日韩一级欧美| 日韩有码在线电影| 视频一区国产| 日韩一级片免费视频| 成人亚洲精品久久久久软件| 日韩经典在线观看| 日韩经典第一页| 亚洲精品成人图区| 日韩国产伦理| 久久精品国产99久久6| 亚洲 欧美 变态 另类 综合| 日韩一区二区三区av| 黄页网站大全在线免费观看| 国内精品二区| 久久人人超碰| 网爆门在线观看| 日韩欧美一级片| 国产欧洲在线| 欧美一级爽aaaaa大片| 蜜桃精品视频在线观看| 国产精品 欧美激情| 欧美成人video| 欧美大片免费| 亚洲日本无吗高清不卡| 国产不卡高清在线观看视频| 亚洲一区欧美在线| 国产一区二区成人| 精品国产亚洲一区二区三区| 国产精品无码人妻一区二区在线| 26uuu精品一区二区三区四区在线| 超碰在线97观看| 欧美成aaa人片免费看| 偷拍精品福利视频导航| 国产又黄又猛的视频| 亚洲国产精品综合小说图片区| 国产一二三区在线视频| 成人免费直播live| 国产色综合网| 欧美一区二区三区观看| 亚洲成人精品久久久| 国产一区二区色噜噜| 91黄色在线看| 国产精品久久久久久妇女6080| 高h调教冰块play男男双性文| 国产精品444|