technically first try in nodejs , frankly not sure if doing right. creating local server stream output distant server. however, when run code , enter url in browser, program fails following message:
events.js:45 throw arguments[1]; // unhandled 'error' event ^ error: enotfound, domain name not found @ iowatcher.callback (dns.js:74:15)
the url used was: 127.0.0.1:9000/http://www.yahoo.fr. , in browser had following message:
no data received unable load webpage because server sent no data. here suggestions: reload web page later. error 324 (net::err_empty_response): server closed connection without sending data.
any appreciated. here code:
var base, dest, node_client, count = 0, url = require('url'), util = require('util'), http = require('http'), http_client = require('http'), request = require('request'), events = require('events'), httpproxy = require('./lib/node-http-proxy'), data_emitter = new events.eventemitter(); httpproxy.createserver(9000, 'localhost').listen(8000); http.createserver(function (req, res) { if(!count) { base = url.parse(req.url).pathname; node_client = http_client.createclient(80, base); count++; } else { dest = req.url.substr(1, req.url.length -1); } request = node_client.request("get", dest, {"host": base}); request.addlistener("response", function (response) { var body = ""; response.addlistener("data", function (data) { body +=data; }); response.addlistener("end", function () { var out = json.parse(body); if(out.length > 0) { data_emitter.emit("out", out); } }); }); // request.close(); var listener = data_emitter.addlistener("data", function(out) { res.writehead(200, {'content-type': 'text/html'}); res.write(json.stringify(out)); res.close(); }); }).listen(9000);
wild guess : browser automatically requests 127.0.0.1:9000/favicon.ico
, program tries resolve favicon.ico
fails , makes program crash before can send data real request.
Comments
Post a Comment