Javascriptがネットワークモニタリングを実現する方法
4499 ワード
本論文の実例は、Javascriptがネットワーク監視を実現する方法を説明する.皆さんの参考にしてください.具体的な実現方法は以下の通りです.
このコードは、ネットワークが接続されているかどうか、および速度が速い状態を監視することができる.
このコードは、ネットワークが接続されているかどうか、および速度が速い状態を監視することができる.
(function(){
var network = function(){
var monitor = this;
/**
* @param {Funcation} speedInterval
*/
var speedInterval = null;
/**
* @param {Function} networkInterval
*/
var networkInterval = null;
/**
* @param {Function} reNetworkInterval
*/
var reNetworkInterval = null;
var time = 5000;
/**
*
*/
var getConnectState = function(){
return navigator.onLine ? 1 : 0;
};
/**
*
*/
var disconnect = 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);
};
/**
*
*/
var speed = {
/**
*
*/
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
*/
var startSpeed = function(){
window.clearInterval(speedInterval);
speedInterval = null;
if(getConnectState() == 1) {
speedInterval = window.setInterval(function(){
var start = new Date().getTime();
if (getConnectState() == 1) {
var img = 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=" + new Date().getTime();
img.onload = function(){
var end = new Date().getTime();
var delta = end - start;
if (delta > 200) {
speed.bad();
} else if (delta > 100) {
speed.medium();
} else {
speed.great();
}
};
} catch(e){
speed.bad();
}
} else {
// TODO
disconnect();
}
}, time);
}else {
// TODO
disconnect();
}
};
/**
*
* @private
*/
var endSpeed = function(){
window.clearInterval(speedInterval);
speedInterval = null;
};
/**
*
* @private
*/
var startNetwork = function(){
if (getConnectState() == 1) {
networkInterval = window.setInterval(function(){
if (getConnectState() == 0) {
disconnect();
}
}, time);
} else{
disconnect();
}
};
/**
*
* @private
*/
var endNetwork = function(){
window.clearInterval(networkInterval);
networkInterval = null;
};
/**
*
*/
this.start = function(){
startNetwork();
startSpeed();
};
/**
*
*/
this.stop = function(){
endSpeed();
endNetwork();
};
};
window.network = new network();
}).call(this);
// , network.start();
本論文で述べたように、皆さんのjavascriptプログラムの設計に役に立ちます.