Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to determine latency of a remote server through the browser

I run a couple of game tunnelling servers and would like to have a page where the client can run a ping on all the servers and find out which is the most responsive. As far as I can see there seems to be no proper way to do this in JavaScript, but I was thinking, does anybody know of a way to do this in flash or some other client browser technology maybe?

like image 485
Mladen Mihajlovic Avatar asked Feb 02 '09 13:02

Mladen Mihajlovic


People also ask

How is server latency measured?

A simple test to measure latency is to run a ping. This is a network diagnostic tool primarily used to test connectivity between two servers or devices. To ping a destination server, an Internet Control Message Protocol (ICMP) echo request packet is sent to that server.

How will you measure the latency and find out the performance lag?

The more common way of measuring latency is called “round-trip time” (or RTT), which calculates the time it takes for a data packet to travel from one point to another on the network and for a response to be sent back to the source.

How do I check my network latency between two Windows servers?

1. Open a command window by clicking the Windows start button, or hitting the Windows key, and typing in cmd then hitting enter. In the results above, we're looking for the values after time= which shows the latency between your computer and your server in milliseconds(ms).


1 Answers

Most applet technology, including Javascript, enforces a same-origin policy. It may be possible to dynamically add DOM elements, such as images, and collect timing information using the onload event handler.

Psuedo-code

for (server in servers) {
  var img = document.createElement('IMG');
  server.startTime = getCurrentTimeInMS();
  img.onload=function() { server.endTime = getcurrentTimeInMS(); }
  img.src = server.imgUrl;
}

Then wait an appropriate time and check the timing for each server object. Repeat as needed and compute averages if you want. I'm not sure what kind of accuracy you can expect.

Disadvantages:

  • You are probably using the wrong tool for the job. A browser is not equipped for this sort of application.
  • It's probably quite inaccurate.
  • If the resource you request is cached it won't give you the results you want, but you can work around that by changing the url each time.
  • This is bandwidth-intensive compared to a normal ping. Make the image tiny, such as a spacer.gif file.
  • The timing depends not only on the latency of the remote server but the bandwidth of that server. This may be a more or less useful measure but it's important to note that it is not simply the latency.
  • You need to be able to serve HTTP requests from the various servers and, crucially, each server should serve the exact same resource (or a resource of the same length). Conditions on the server can affect the response time, such as if one server is compressing the data and another isn't.
like image 153
Mr. Shiny and New 安宇 Avatar answered Sep 28 '22 11:09

Mr. Shiny and New 安宇