国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript實現網絡監測的方法

2024-05-06 16:24:09
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Javascript實現網絡監測的方法,可實現檢測網絡連接及網速的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Javascript實現網絡監測的方法。分享給大家供大家參考。具體實現方法如下:

該代碼可監測網絡是否連接及網速的快慢狀態。

 

 
  1. (function(){ 
  2. var network = function(){ 
  3. var monitor = this
  4. /** 
  5. * @param {Funcation} speedInterval 
  6. */ 
  7. var speedInterval = null
  8. /** 
  9. * @param {Function} networkInterval 
  10. */ 
  11. var networkInterval = null
  12. /** 
  13. * @param {Function} reNetworkInterval 
  14. */ 
  15. var reNetworkInterval = null
  16. var time = 5000; 
  17. /** 
  18. * 獲取網絡連接狀態 
  19. */ 
  20. var getConnectState = function(){ 
  21. return navigator.onLine ? 1 : 0; 
  22. };  
  23. /** 
  24. * 網絡中斷 
  25. */ 
  26. var disconnect = function(){ 
  27. // TODO ...  
  28. console.log("網速中斷"); 
  29. window.clearInterval(reNetworkInterval); 
  30. reNetworkInterval = null
  31. endSpeed(); 
  32. endNetwork(); 
  33. window.setTimeout(function(){ 
  34. reNetworkInterval = window.setInterval(function(){ 
  35. if (getConnectState() == 1) { 
  36. window.clearInterval(reNetworkInterval); 
  37. reNetworkInterval = null
  38. startSpeed(); 
  39. startNetwork(); 
  40. else { 
  41. window.clearInterval(reNetworkInterval); 
  42. reNetworkInterval = null
  43. disconnect(); 
  44. }, time); 
  45. }, 2 * time); 
  46. }; 
  47. /** 
  48. * 網絡速度 
  49. */ 
  50. var speed = { 
  51. /** 
  52. * 網速過慢 
  53. */ 
  54. bad : function(){ 
  55. // TODO ...  
  56. console.log("網速過慢"); 
  57. window.setTimeout(function(){ 
  58. if(getConnectState() == 1) { 
  59. window.clearInterval(networkInterval); 
  60. networkInterval = null
  61. startSpeed(); 
  62. else { 
  63. disconnect(); 
  64. }, 2 * time); 
  65. }, 
  66. /** 
  67. * 網速中等 
  68. */ 
  69. medium : function(){ 
  70. // TODO ...  
  71. console.log("網速中等"); 
  72. }, 
  73. /** 
  74. * 網速極佳 
  75. */ 
  76. great : function(){ 
  77. // TODO ...  
  78. console.log("網速極佳"); 
  79. }; 
  80. /** 
  81. * 開啟速度監測 
  82. * @private 
  83. */ 
  84. var startSpeed = function(){ 
  85. window.clearInterval(speedInterval); 
  86. speedInterval = null
  87. if(getConnectState() == 1) { 
  88. speedInterval = window.setInterval(function(){ 
  89. var start = new Date().getTime(); 
  90. if (getConnectState() == 1) { 
  91. var img = document.getElementById("networkSpeedImage"); 
  92. if (!!!img) { 
  93. img = document.createElement("IMG"); 
  94. img.id = "networkSpeedImage"
  95. img.style.display = "none"
  96. document.body.appendChild(img); 
  97. try { 
  98. img.src = "http://www.baidu.com/img/baidu_jgylogo3.gif?_t=" + new Date().getTime(); 
  99. img.onload = function(){ 
  100. var end = new Date().getTime(); 
  101. var delta = end - start; 
  102. if (delta > 200) { 
  103. speed.bad(); 
  104. else if (delta > 100) { 
  105. speed.medium(); 
  106. else { 
  107. speed.great(); 
  108. }; 
  109. catch(e){ 
  110. speed.bad(); 
  111. else { 
  112. // TODO 網絡斷開 
  113. disconnect(); 
  114. }, time); 
  115. }else { 
  116. // TODO 網絡斷開 
  117. disconnect(); 
  118. }; 
  119. /** 
  120. * 停止速度監測 
  121. * @private 
  122. */ 
  123. var endSpeed = function(){ 
  124. window.clearInterval(speedInterval); 
  125. speedInterval = null
  126. }; 
  127. /** 
  128. * 開啟網絡連接監測 
  129. * @private 
  130. */ 
  131. var startNetwork = function(){ 
  132. if (getConnectState() == 1) { 
  133. networkInterval = window.setInterval(function(){ 
  134. if (getConnectState() == 0) { 
  135. disconnect(); 
  136. }, time); 
  137. else
  138. disconnect(); 
  139. }; 
  140. /** 
  141. * 結束網絡連接監測 
  142. * @private  
  143. */ 
  144. var endNetwork = function(){ 
  145. window.clearInterval(networkInterval); 
  146. networkInterval = null
  147. }; 
  148. /** 
  149. * 網絡監控開始 
  150. */ 
  151. this.start = function(){ 
  152. startNetwork(); 
  153. startSpeed(); 
  154. }; 
  155. /** 
  156. * 停止網絡監控 
  157. */ 
  158. this.stop = function(){ 
  159. endSpeed(); 
  160. endNetwork(); 
  161. }; 
  162. }; 
  163. window.network = new network(); 
  164. }).call(this); 
  165. // 調用的時候,直接調用network.start(); 

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 札达县| 华阴市| 三原县| 台东县| 本溪市| 陈巴尔虎旗| 湘阴县| 凉山| 尤溪县| 镇安县| 北流市| 南投县| 宣化县| 应用必备| 满洲里市| 涞水县| 拉孜县| 揭东县| 渝北区| 邹城市| 黎川县| 永清县| 丹东市| 泰安市| 乐至县| 晋州市| 宣城市| 丹棱县| 红河县| 壤塘县| 南漳县| 玉田县| 宾川县| 苏州市| 伊金霍洛旗| 恩施市| 花垣县| 林周县| 六盘水市| 河北区| 印江|