JS類比的Ping程式 (Web Ping)

來源:互聯網
上載者:User

      JS雖然發送不了真正Ping的ICMP資料包,但Ping的本質仍然是請求/回複的時間差,我們可以試圖去請求網站的某個不存在資源,根據返回錯誤的時間,我們就可以計算出延時的時間差了。在本例,我們嘗試訪問指定網站下的一個不存在的圖片檔案(檔案名稱是個隨機數),以致onerror事件發生,這個過程大致就是網路上的延時差。

      當然,實際過程中會複雜的多。HTTP1.1協議第一次訪問時需要一個TCP串連的過程,要經過3次握手之後才開始HTTP通訊,因此第一次就要慢一些。如果是ping一個網域名稱,那還要包括網域名稱解析的時間;其次,在理論上,之後的Request和Response是一個TCP-AP包和TCP-ACK包。但如果訪問的是一個不存在的資源,伺服器有可能會返回一個HTTP重新導向,這時用戶端就要再請求一次,直到重新導向的頁面資料收到後,才觸發onerror事件,這其中的時間就要長的多了。 如果伺服器404的資料長度大於資料包的MTU值,IP協議還會分包傳輸,這樣延時就會成倍的增加。

      另外一個可能的情況就是,請求一個不存在的主機,理應逾時才對。但有可能電訊廠商的DNS返回一個廣告網站的IP,例如互聯星空,以至於ping的很流暢。(2009/6/21)

DEMO:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.