网速前端计算&系统探测

最近做一个web的检测工具,主要探测对单个节点的网速测试,和当前客户端的系统和浏览器,学到了不少东西哈!特地分享下!!

1.计算网速封装的函数,传入ajax起始时间,ajax成功返回时间,数据容量,返回3个网速的参数,最常见的就是kBps,注释写的很清楚了哈,在下面!

/*
 * 计算网速
 *
 * @paras
 * ajaxStartTimeStamp ajax开始时间戳 单位(毫秒) 1489475170931
 * ajaxEndTimeStamp ajax截止时间戳 单位(毫秒) 1489475171875
 * dataSize 数据大小 单位(byte 字节) 525312 比如abc 就是3字节
 *
 * @return
 * kbps 单位(每秒传送多少个千位)
 */

function computeNetSpeed(ajaxStartTimeStamp,ajaxEndTimeStamp,dataSize){

	// 获取当前时间戳(以s为单位)  
	var startMilSec = ajaxStartTimeStamp
	var endMilSec = ajaxEndTimeStamp
	var byte = dataSize //字节 比如abc 就相当于3个字节
	var bit = byte*8 //位

	var timeDiffSec = (endMilSec - startMilSec)/1000 //秒
	var kbps = (bit/timeDiffSec)/1000 //每秒传送多少个千位
	var kBps = (byte/timeDiffSec)/1000 //每秒传送多少千字节
	var Mbps = (bit/timeDiffSec)/1000/1000 //每秒传送多少兆位

	var obj = {
		kbps: Math.round(kbps),//单位 Kbps 每秒传送多少个千位
		kBps: Math.round(kBps),//单位 KBps 每秒传送多少千字节(网络下载中常见的多少KB)
		Mbps: Number.parseFloat(Mbps.toFixed(2))// 单位 Mbps 每秒传送多少个兆位
	}

	return obj
}

var res = computeNetSpeed(1489475170931,1489475171875,525312);
console.log(res)

2.探测当前系统,根据别的人轮子改的,直接运行就可以了,调用navigator

/*
* 探测系统
*
* @paras
* 无
*
* @return
* Win10
*/
function detectOS() {
    var userAgent = window.navigator.userAgent;

    //PC系统 windows
    if (userAgent.indexOf("Windows NT 5.0") > -1 || userAgent.indexOf("Windows 2000") > -1){
        return "Win2000";
    }

    if (userAgent.indexOf("Windows NT 5.1") > -1 || userAgent.indexOf("Windows XP") > -1){
        return "WinXP";
    }

    if (userAgent.indexOf("Windows NT 5.2") > -1 || userAgent.indexOf("Windows 2003") > -1){
        return "Win2003";
    }

    if (userAgent.indexOf("Windows NT 6.0") > -1 || userAgent.indexOf("Windows Vista") > -1){
        return "WinVista";
    }

    if (userAgent.indexOf("Windows NT 6.1") > -1 || userAgent.indexOf("Windows 7") > -1){
        return "Win7";
    }

    if (userAgent.indexOf("Windows NT 10.0") > -1 || userAgent.indexOf("Windows 10") > -1){
        return "Win10";
    }

    //PC系统 Mac
    if (userAgent.indexOf("Macintosh") > -1){
        return "Mac";
    }

    //移动 ios
    if (userAgent.indexOf("OS") > -1){
         return "IOS";
    }

    //移动 android
    if (userAgent.indexOf("Android") > -1){
        return "Android";
    }

    return "未识别的系统";
}

3.探测浏览器,这个也是别人的轮子改的~~

经验分享 程序员 微信小程序 职场和发展