描述" />

AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

通過JS獲取你當前的網(wǎng)絡狀況?建議大家學一學~

來源: 責編: 時間:2024-04-16 08:33:29 190觀看
導讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心檢測網(wǎng)速想要在Web端檢測網(wǎng)速,其實很簡單,有一個全局的對象——navigation,我們來看看它的身上都有哪些東西:圖片屬性
描述

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心ltK28資訊網(wǎng)——每日最新資訊28at.com

檢測網(wǎng)速

想要在Web端檢測網(wǎng)速,其實很簡單,有一個全局的對象——navigation,我們來看看它的身上都有哪些東西:ltK28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ltK28資訊網(wǎng)——每日最新資訊28at.com

屬性
ltK28資訊網(wǎng)——每日最新資訊28at.com

描述
ltK28資訊網(wǎng)——每日最新資訊28at.com

類型
ltK28資訊網(wǎng)——每日最新資訊28at.com

downlink
ltK28資訊網(wǎng)——每日最新資訊28at.com

有效帶寬估算(單位:兆比特/秒)
ltK28資訊網(wǎng)——每日最新資訊28at.com

number
ltK28資訊網(wǎng)——每日最新資訊28at.com

effectiveType
ltK28資訊網(wǎng)——每日最新資訊28at.com

effectiveType
ltK28資訊網(wǎng)——每日最新資訊28at.com

slow-2g/2g/3g/4g
ltK28資訊網(wǎng)——每日最新資訊28at.com

rtt
ltK28資訊網(wǎng)——每日最新資訊28at.com

當前連接下評估的往返時延
ltK28資訊網(wǎng)——每日最新資訊28at.com

number
ltK28資訊網(wǎng)——每日最新資訊28at.com

saveData
ltK28資訊網(wǎng)——每日最新資訊28at.com

用戶代理是否設置了減少數(shù)據(jù)使用的選項
ltK28資訊網(wǎng)——每日最新資訊28at.com

boolean
ltK28資訊網(wǎng)——每日最新資訊28at.com

useNetwork

我們可以自定義一個hook,用來獲取網(wǎng)頁當前的網(wǎng)絡狀態(tài)~需要具備以下要素:ltK28資訊網(wǎng)——每日最新資訊28at.com

1、返回的數(shù)據(jù)所需的ts類、監(jiān)聽網(wǎng)絡變化的enumltK28資訊網(wǎng)——每日最新資訊28at.com

2、獲取網(wǎng)絡狀態(tài)ltK28資訊網(wǎng)——每日最新資訊28at.com

3、監(jiān)聽網(wǎng)絡變化,并實時更新最新的網(wǎng)絡狀態(tài)ltK28資訊網(wǎng)——每日最新資訊28at.com

第一步:所需的ts類型

說說NetworkState的各個參數(shù):ltK28資訊網(wǎng)——每日最新資訊28at.com

  • since:記錄當時檢測的時間
  • oline:記錄是否有網(wǎng)絡
  • rtt:記錄時延
  • downlink:記錄帶寬
  • saveData:記錄用戶代理是否設置了減少數(shù)據(jù)使用
  • effectiveType:網(wǎng)絡連接類型
// hook返回的值interface NetworkState {  since?: Date;  online?: boolean;  rtt?: number;  downlink?: number;  saveData?: boolean;  effectiveType?: string;}// 監(jiān)聽網(wǎng)絡變化的事件名enumenum NetworkEventType {  ONLINE = 'online',  OFFLINE = 'offline',  CHANGE = 'change',}

第二步:獲取網(wǎng)絡狀態(tài)

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,  };}

第三步:實時更新網(wǎng)絡狀態(tài)

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;


ltK28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-83785-0.html通過JS獲取你當前的網(wǎng)絡狀況?建議大家學一學~

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 你的debug包在Android 14變卡了嗎

下一篇: 正則表達式中 “$” 并不是表示 “字符串結束”

標簽:
  • 熱門焦點
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產品也出現(xiàn)了歷史低價,那么各個價位段的產品性價比
  • 一文看懂為蘋果Vision Pro開發(fā)應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現(xiàn)實(MR)頭戴設備。Vision Pro結合了虛擬現(xiàn)實(VR)和增強現(xiàn)實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 共享單車的故事講到哪了?

    來源丨海克財經與共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發(fā)報道稱,成都、天津、鄭州等地多個共享單
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態(tài)LT(ID:LingTai_LT)如何成為一家偉大企業(yè)?答案一定是對“勢”的把握,這其中最關鍵的當屬對企業(yè)戰(zhàn)略的制定,且能夠站在未來看現(xiàn)在,即使這其中的
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業(yè)務到 2022 年底還是 0,希望 2023 年出來一個 1。”這是2022年底,李彥宏
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據(jù)韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
  • 電博會上海爾智家模擬500平大平層,還原生活空間沉浸式體驗

    電博會為了更好地讓參展觀眾真正感受到智能家居的絕妙之處,海爾智家的程傳嶺先生同樣介紹了展會上海爾智家的模擬500平大平層,還原生活空間沉浸式體驗。程傳
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關村論壇新聞發(fā)布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發(fā)展改革委、工業(yè)和信息化部、國務
Top