We’ve seen the importance of callback method in our previous video tutorials. Now lets see how networked I/O Is unpredictable.
Here we request/ping for information from 3 different servers and look at its response time. Each time we send a request, we get different response time depending upon how busy the server is, its bandwidth etc.
JavaScript File
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var http= require("http"), urls = [ "technotip.org", "technotip.com", "www.capturecaption.com" ]; for(var i = 0; i < urls.length; i++){ ping( urls[i] ); } function ping( url ){ var start = new Date(); http.get({ host: url }, function(res){ console.log("URL :"+url); console.log("Response Time: "+(new Date() - start)+" ms"); }); } |
Here we require http module, which is built into nodejs, and store it inside a local object called http. We also declare and initialize an array with 3 domain names. Using for loop, we loop through each URL present in the urls array and pass it to a method called ping();
Inside ping method, we record client system date in a variable before sending a request to the server(via URL). Now using http objects get method we send request to the server and see it’s response time. get method takes 2 parameter, first parameter is an object which contains host information – the host url { host: url }. Second parameter is a callback method which automatically gets an object which is returned by first parameter {host: url}. Inside the callback method, we subtract the new system date with the one we recorded before requesting for a response, this way we calculate the response time of each URL.
HTTP get method: Node.js
[youtube https://www.youtube.com/watch?v=vktKMtWoPbA]
output
C:\node>node app.js
URL :technotip.com
Response Time: 1462 ms
URL :www.capturecaption.com
Response Time: 1993 ms
URL :technotip.org
Response Time: 2004 ms
C:\node>node app.js
URL :technotip.com
Response Time: 1381 ms
URL :www.capturecaption.com
Response Time: 1702 ms
URL :technotip.org
Response Time: 1871 ms
C:\node>node app.js
URL :technotip.com
Response Time: 1409 ms
URL :www.capturecaption.com
Response Time: 1628 ms
URL :technotip.org
Response Time: 2001 ms
C:\node>node app.js
URL :technotip.com
Response Time: 1512 ms
URL :www.capturecaption.com
Response Time: 1534 ms
URL :technotip.org
Response Time: 1899 ms
Each time we execute the script, we get different response time, and the order of URLs may also differ, as we can’t predict which server will respond first.