एक साधारण http प्रॉक्सी सर्वर बनाकर node.js के बारे में अधिक जानने की कोशिश कर रहा है। उपयोग परिदृश्य सरल है: उपयोगकर्ता -> प्रॉक्सी -> सर्वर -> प्रॉक्सी -> उपयोगकर्ताhttp अनुरोध पर http सर्वर को पाइप करके सरल node.js प्रॉक्सी
निम्न कोड अंतिम चरण तक काम करता है। पाइप कनेक्टर के आउटपुट को उपयोगकर्ता को वापस नहीं ढूंढ सका।
#!/usr/bin/env node
var
url = require('url'),
http = require('http'),
acceptor = http.createServer().listen(3128);
acceptor.on('request', function(request, response) {
console.log('request ' + request.url);
request.pause();
var options = url.parse(request.url);
options.headers = request.headers;
options.method = request.method;
options.agent = false;
var connector = http.request(options);
request.pipe(connector);
request.resume();
// connector.pipe(response); // doesn't work
// connector.pipe(request); // doesn't work either
});
का उपयोग tcpflow मैं, तो बाहर जाने वाले प्रॉक्सी अनुरोध ब्राउज़र से आने वाली अनुरोध देखते हैं, तो सर्वर प्रतिक्रिया वापस प्रॉक्सी के लिए। किसी भी तरह से मैं ब्राउज़र पर प्रतिक्रिया वापस पुनः प्रेषित करने का प्रबंधन नहीं कर सका।
इस तर्क को पाइप के साथ लागू करने का उचित तरीका क्या है?
-1 क्योंकि: stream.js: 94 फेंक एर; // पाइप में अनचाहे स्ट्रीम त्रुटि। ^ त्रुटि: errnoException पर ECONNREFUSED कनेक्ट (net.js: 901: 11) Object.afterConnect [के रूप में oncomplete] (net.js: 892: 19) पर –
@rob, संभवत: इस उदाहरण के साथ काम नहीं करता है नई स्ट्रीम 2 एपीआई। स्ट्रीम 2 को नोड 0.9 में बीटा के रूप में पेश किया गया था और 0.10 शाखा में स्थिर हो गया था। 0.10 मार्च 2013 को जारी किया गया था - इस चर्चा के महीनों बाद। इसलिए, यदि आप वास्तव में अधिक रचनात्मक बनना चाहते हैं, तो -1 को डालने के बजाय, नए एपीआई के लिए उदाहरण अनुकूलित करें। –
@NikolaiGorchilov उपर्युक्त उदाहरण नोड 0.10.13 के साथ मेरे लिए काम किया। केवल मुझे बदलना था 'प्रतिक्रिया। लिखना' प्रतिक्रिया के बजाय 'प्रतिक्रिया.writeHeader' – Gireesh