Latency / Ping test from Browser

一世执手 提交于 2019-12-24 11:28:28

问题


I want to check ping from Browser to a Server.

Ping/Latency should not be from Server but from Client's Machine.

I have seen sites like Pingtest.net so it is possible to do from Browser.

Any language will do.

The server ping can also be tested by an UDP packet other than normal shell command ping.

How should i proceed. ?


回答1:


Try using XMLHTTPRequest() for javascript. The objective is to make about 10 objects and place them in an array. Then use onreadystatechange in each and every one of them. For the function inside it, use the status 1 to start the timer and status 3 to finish the timer. Use the object Date() to get the times.

That's the whole idea behind solving that. if you need more just comment my answer and I'll try to make it more complete and "spoily".


Assuming you know how to program in javascript, this is one idea for a possible solution: You first create an array where you'll insert in each position an instance of XMLHTTPRequest(). Then, you'll create a function that returns a function where:
The outside function will save some sort of identification towards the "current" request, including a reference to the instance. This function is supposed to be executed right away.
The inner function is supposed to be used to execute the state and know when to "start" the timer and when to "stop" the timer. Take care of opening the connect and sending the headers to all of 'em, wait to get the answer and finally register the times you got. Do some math and you get the ping.

That's the whole idea behind this. Good luck!




回答2:


<script type="text/javascript">
try {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
  alert("Permission UniversalBrowserRead denied.");
}

var req = new XMLHttpRequest();
    req.open('GET', 'http://www.mozilla.org/', false);.
    req.send();
    if(req.status == 200) {
        alert(req.responseText);
    }



回答3:


Try this - I have invoked a Blank page website so that it doesnt end up calculating time to load instead serve as ping time. FYI - its still not going to be same as ping time measured by running the ping command.

function loadXMLDoc() {  
    var xhttp = new XMLHttpRequest(); 
    var ping = new Date;
    xhttp.open("GET", "http://cors-anywhere.herokuapp.com/blank.org/", false);
    xhttp.setRequestHeader('Cache-Control', 'no-cache');
    xhttp.send();
    if(xhttp.status == 200) {
             ping = new Date - ping;
             console.log('Ping ' + ping + 'ms');
    }
  }


来源:https://stackoverflow.com/questions/12035569/latency-ping-test-from-browser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!