|
大家好,很高兴又见面了,我是'前端进阶',由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发! ![]() 3G/4G/5G/WIFI有什么不同? 前言不同的用户有不同的网络连接,可以是 3G、4G、5G、WiFi 等。有时当联网连接从 4G 变为 3G 甚至无网络的时候, 作为开发人员,应该对这种变化做出反应,例如显示通知或建议不要下载复杂的媒体内容。 下图展示了不同浏览器对此类API的支持情况,总体看来,浏览器的支持情况分为4个类别。 ![]() 浏览器支持情况(https:///?search=navigator.connection)
下面是笔者机器打印navigator.connection的值: ![]() navigator.connection的输出 接下来对每一个值进行说明。 1.连接类型可以找出使用了哪种连接类型,为此需要获取 NetworkInformation 对象中type属性的值: const connectionType = navigator.connection.type;console.log(connectionType); // cellular输出'cellular',在 ConnectionType 枚举中列出了许多其他可能的值: 这里重点解释一下none和unknown值。none相当于 navigator.onLine = false,这意味着用户离线或没有互联网连接。 unknown是指用户有互联网连接,但无法或不愿确定其连接方式。
2.有效连接类型 (ECT)确定用户的互联网连接速度有时候可能很有用: const ect: string = navigator.connection.effectiveType;console.log(ect); //输出 4g有 4 个可能的值: 解释一下这些值:
下面是该属性的浏览器支持情况: ![]() 总体来看,FF浏览器不支持,Chrome从61版本已开始提供支持。 3.RTT值只读属性,返回当前连接的估计有效往返时间,四舍五入到最接近的 25 毫秒倍数。 该值基于最近活动的连接中观察到的应用层 RTT 测量值, 它不包括与私有地址空间的连接。 如果没有最近的测量数据可用,则该值基于底层连接技术的属性。 const rtt: number = navigator.connection.rtt; // 毫秒计算的rtt值console.log(rtt); // 100
4.Downlink下行链路接口的下行链路只读属性。返回以兆比特/秒为单位的有效带宽估计,四舍五入到最接近的 25 千比特/秒的倍数。 该值基于最近观察到的活动连接的应用程序层吞吐量,不包括与专用地址空间建立的连接。 在没有最近的带宽测量数据的情况下,属性值由底层连接技术的属性决定。 还有一个属性downlinkMax,也是只读属性。返回底层连接技术的最大下行链路速度,以每秒兆位 (Mbps) 为单位。下面是downlink浏览器的支持情况: ![]() downlink浏览器支持情况 5.了解有关更改 Internet 连接的信息NetworkInformation API 有 onchange 事件处理程序,每次当用户代理中的网络连接发生变化时它都会运行,可以实现自己的处理程序来跟踪这种变化并做出反应。 // 获取连接类型const type = navigator.connection.type;function changeHandler(e) { //处理连接类型变化}// 添加onchange事件navigator.connection.onchange = changeHandler;// 或者navigator.connection.addEventListener('change', changeHandler);尝试在 Network DevTools 面板中更改您的互联网连接,您会在控制台中看到输出的更改。 您也可以在笔记本电脑上禁用并再次启用 WiFi 连接,浏览器也会跟踪此更改。 然后你可以根据需要修改脚本来处理这些变化! 6.完整测试代码参考资料https://coyotess./how-to-get-information-about-user-network-connection-in-javascript-4d63fd58f15f https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/downlinkMax https:///network-type-speed.html https://googlechrome./samples/network-information/ |
|
|