Skip to content

Instantly share code, notes, and snippets.

@ChrisRicca
Created May 23, 2010 04:41
Show Gist options
  • Save ChrisRicca/410647 to your computer and use it in GitHub Desktop.
Save ChrisRicca/410647 to your computer and use it in GitHub Desktop.
A simple demo-service that proxies Google. Useful for grokking node.js concurrency & timing.
sys = require('sys'),
http = require('http');
request_count = 1;
http.createServer(function (req, res) {
var this_count = "(" + request_count++ + ")";
sys.puts(this_count + " REQUESTED! " + req.url);
var google = http.createClient(80, 'www.google.com');
var request = google.request('GET', req.url, {'host': 'www.google.com'});
request.addListener('response', function (response) {
res.writeHead(response.statusCode, response.headers);
response.addListener('data', function (chunk) {
sys.puts(this_count + " DATA!");
res.write(chunk);
});
response.addListener('end', function (chunk) {
sys.puts(this_count + " END!");
res.end();
});
});
request.end();
}).listen(8000);
sys.puts('Server running at http://127.0.0.1:8000/');
@ChrisRicca
Copy link
Author

When I use a browser, and the browser fetches images and other things during the request, the server produces this output:

(3) REQUESTED! /

(3) DATA!

(3) DATA!

(3) DATA!

(3) DATA!

(3) DATA!

(3) DATA!

(3) END!

(4) REQUESTED! /logos/pacman10-hp.png

(5) REQUESTED! /images/srpr/nav_logo13.png

(6) REQUESTED! /extern_js/f/CgJlbhICdXMgACswCjhoQAgsKzAOOA8sKzAWOBYsKzAXOAcsKzAYOAUsKzAZOCAsKzAlOMqIASwrMCY4CywrMCc4BCwrMDw4AiwrMEA4ECwrMEE4BSwrMEU4ASwrME44BSwrMFE4AiyAAhM/SjUGL2YAI-M.js

(4) DATA!

(4) DATA!

(4) DATA!

(4) DATA!

(4) END!

(5) DATA!

(5) DATA!

(6) DATA!

(6) DATA!

(6) DATA!

(5) DATA!

(5) DATA!

(6) DATA!

(5) DATA!

(6) DATA!

(6) DATA!

(5) DATA!

(5) DATA!

(5) DATA!

(6) DATA!

(5) DATA!

(6) DATA!

(6) DATA!

(5) DATA!

(5) DATA!

(6) DATA!

(5) DATA!

(5) END!

(6) DATA!

(6) DATA!

(6) END!

(7) REQUESTED! /csi?v=3&s=webhp&action=&e=24660&ei=PLP4S-fZH8b_lgeLwdzGCg&expi=24660&imc=1&imn=1&imp=1&rt=prt.31,xjsls.45,ol.167,iml.88,xjses.169,xjsee.216,xjs.320

(7) END!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment