ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptで模擬したPingエフェクトコード(Web Ping)_javascriptスキル

JavaScriptで模擬したPingエフェクトコード(Web Ping)_javascriptスキル

WBOY
リリース: 2016-05-16 18:09:32
オリジナル
1995 人が閲覧しました

もちろん、リクエスト中に HTTP ヘッダーの長さをカウントすることはできないため、リクエスト パケットの長さが最大送信単位の臨界点に達すると、追加の HTTP ヘッダーによって IP パケットが発生する可能性があるため、一定のエラーが発生します (2009 年)。 /6/21)

オンライン デモ: http://demo.jb51.net/js/2011/ping/

コア コード:

コードをコピー コードは次のとおりです:





HTTP Ping




URL:

Timeout:






<script> <br>var intStartTime; <br>var objIMG = new Image(); <br>objIMG.onload = <br>objIMG.onerror = <br>function() <br>{ <br>/* <br>* 有回应,取消超时计时 <br>*/ <br>clearTimeout(intTimerID); <br>if(!bolIsRunning || bolIsTimeout) <br>return; <br>var delay = new Date() - intStartTime; <br>println("Reply from " <br>strURL <br>" time" <br>((delay<1)?("<1"):("=" delay)) <BR>"ms"); <BR>arrDelays.push(delay); <BR>/* <BR>* 每次请求间隔限制在1秒以上 <BR>*/ <BR>setTimeout(ping, delay<1000?(1000-delay):1000); <BR>} <BR>function ping() <BR>{ <BR>/* <BR>* 发送请求 <BR>*/ <BR>intStartTime = new Date(); <BR>intSent ; <BR>objIMG.src = strURL "/" intStartTime; <BR>bolIsTimeout = false; <BR>/* <BR>* 超时计时 <BR>*/ <BR>intTimerID = setTimeout(timeout, intTimeout); <BR>} <BR>function timeout() <BR>{ <BR>if(!bolIsRunning) <BR>return; <BR>bolIsTimeout = true; <BR>objIMG.src = "X:\"; <BR>println("Request timed out."); <BR>ping(); <BR>} <BR></script>
<script> <br>var $ = function(v){return document.getElementById(v)}; <br>var arrDelays = []; <br>var intSent; <br>var bolIsRunning = false; <br>var bolIsTimeout; <br>var strURL; <br>var intTimeout; <br>var intTimerID; <br>var objBtn = $("btnSwitch"); <br>var objContent = $("divContent"); <br>var objTxtURL = $("txtURL"); <br>objTxtURL.value = window.location.host; <br>function handleBtnClick() <br>{ <br>if(bolIsRunning) <br>{ <br>/* <br>* 停止 <br>*/ <br>var intRecv = arrDelays.length; <br>var intLost = intSent-intRecv; <br>var sum = 0; <br>for(var i=0; i<intRecv; i ) <BR>sum = arrDelays[i]; <BR>objBtn.value = "Start"; <BR>bolIsRunning = false; <BR>/* <BR>* 统计结果 <BR>*/ <BR>println(" "); <BR>println("Ping statistics for " strURL ":"); <BR>println("  Packets: Sent = " <BR>intSent <BR>", Received = " <BR>intRecv <BR>", Lost = " <BR>intLost <BR>" (" <BR>Math.floor(intLost / intSent * 100) <BR>"% loss),"); <BR>if(intRecv == 0) <BR>return; <BR>println("Approximate round trip times in milli-seconds:"); <BR>println("  Minimum = " <BR>Math.min.apply(this, arrDelays) <BR>"ms, Maximum = " <BR>Math.max.apply(this, arrDelays) <BR>"ms, Average = " <BR>Math.floor(sum/intRecv) <BR>"ms"); <BR>} <BR>else <BR>{ <BR>/* <BR>* 开始 <BR>*/ <BR>strURL = objTxtURL.value; <BR>if(strURL.length == 0) <BR>return; <BR>if(strURL.substring(0,7).toLowerCase() != "http://") <BR>strURL = "http://" strURL; <BR>intTimeout = parseInt($("txtTimeout").value, 10); <BR>if(isNaN(intTimeout)) <BR>intTimeout = 2000; <BR>if(intTimeout < 1000) <BR>intTimeout = 1000; <BR>objBtn.value = "Stop "; <BR>bolIsRunning = true; <BR>arrDelays = []; <BR>intSent = 0; <BR>cls(); <BR>println("Pinging " strURL ":"); <BR>println(" "); <BR>ping(); <BR>} <BR>} <BR>function println(str) <BR>{ <BR>var objDIV = document.createElement("div"); <BR>if(objDIV.innerText != null) <BR>objDIV.innerText = str; <BR>else <BR>objDIV.textContent = str; <BR>objContent.appendChild(objDIV); <BR>objContent.scrollTop = objContent.scrollHeight; <BR>} <BR>function cls() <BR>{ <BR>objContent.innerHTML = ""; <BR>} <BR></script>


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート