Javascript实现网络监测的方法
本文实例讲述了Javascript实现网络监测的方法。分享给大家供大家参考。具体实现方法如下:
该代码可监测网络是否连接及网速的快慢状态。
(function(){ varnetwork=function(){ varmonitor=this; /** *@param{Funcation}speedInterval */ varspeedInterval=null; /** *@param{Function}networkInterval */ varnetworkInterval=null; /** *@param{Function}reNetworkInterval */ varreNetworkInterval=null; vartime=5000; /** *获取网络连接状态 */ vargetConnectState=function(){ returnnavigator.onLine?1:0; }; /** *网络中断 */ vardisconnect=function(){ //TODO... console.log("网速中断"); window.clearInterval(reNetworkInterval); reNetworkInterval=null; endSpeed(); endNetwork(); window.setTimeout(function(){ reNetworkInterval=window.setInterval(function(){ if(getConnectState()==1){ window.clearInterval(reNetworkInterval); reNetworkInterval=null; startSpeed(); startNetwork(); }else{ window.clearInterval(reNetworkInterval); reNetworkInterval=null; disconnect(); } },time); },2*time); }; /** *网络速度 */ varspeed={ /** *网速过慢 */ bad:function(){ //TODO... console.log("网速过慢"); window.setTimeout(function(){ if(getConnectState()==1){ window.clearInterval(networkInterval); networkInterval=null; startSpeed(); }else{ disconnect(); } },2*time); }, /** *网速中等 */ medium:function(){ //TODO... console.log("网速中等"); }, /** *网速极佳 */ great:function(){ //TODO... console.log("网速极佳"); } }; /** *开启速度监测 *@private */ varstartSpeed=function(){ window.clearInterval(speedInterval); speedInterval=null; if(getConnectState()==1){ speedInterval=window.setInterval(function(){ varstart=newDate().getTime(); if(getConnectState()==1){ varimg=document.getElementById("networkSpeedImage"); if(!!!img){ img=document.createElement("IMG"); img.id="networkSpeedImage"; img.style.display="none"; document.body.appendChild(img); } try{ img.src="http://www.baidu.com/img/baidu_jgylogo3.gif?_t="+newDate().getTime(); img.onload=function(){ varend=newDate().getTime(); vardelta=end-start; if(delta>200){ speed.bad(); }elseif(delta>100){ speed.medium(); }else{ speed.great(); } }; }catch(e){ speed.bad(); } }else{ //TODO网络断开 disconnect(); } },time); }else{ //TODO网络断开 disconnect(); } }; /** *停止速度监测 *@private */ varendSpeed=function(){ window.clearInterval(speedInterval); speedInterval=null; }; /** *开启网络连接监测 *@private */ varstartNetwork=function(){ if(getConnectState()==1){ networkInterval=window.setInterval(function(){ if(getConnectState()==0){ disconnect(); } },time); }else{ disconnect(); } }; /** *结束网络连接监测 *@private */ varendNetwork=function(){ window.clearInterval(networkInterval); networkInterval=null; }; /** *网络监控开始 */ this.start=function(){ startNetwork(); startSpeed(); }; /** *停止网络监控 */ this.stop=function(){ endSpeed(); endNetwork(); }; }; window.network=newnetwork(); }).call(this); //调用的时候,直接调用network.start();
希望本文所述对大家的javascript程序设计有所帮助。