11

मैं उपयोग नोड http, रिवर्स प्रॉक्सी जो अपेक्षा के अनुरूप काम कर रहा है के साथ आवेदन चलाने के लिए कुछ मामलों में उपयोगकर्ता तुरंत आवेदन चलाना चाहते हैं प्रॉक्सी मॉड्यूल जो प्रगति में यह की स्थिति (ऐप अभी तक नहीं है) और ऐप ऊपर और चलने तक इसमें लगभग 3-15 सेकंड लग सकते हैं। इस मामले उपयोगकर्ता में प्रॉक्सीके दौरान त्रुटि उपयोगकर्ता एप्लिकेशन अनुरोध करने से पहले अपने ऊपर

proxy.web(req, res, { 
    target: 'http://' + hostname + ':' + Port 
    console.log("App------------->Proxy App"); 
}); 

proxy.on('proxyReq', function(proxyReq, req, res, options) { 
    console.log("App------------->Proxy Request"); 
}); 

    proxy.on('error', function (err, req, res) { 
    console.log("App------------->Proxy Error"); 
     res.end('Something went wrong'); 
    }); 

    // Listen for the `proxyRes` event on `proxy`. 
    proxy.on('proxyRes', function (proxyRes, req, res) { 
     console.log("App------------->Proxy Response") 
     var respState = res.statusCode 
    }); 

त्रुटि लॉग में ढेर के मामले में की तरह

  1. प्रॉक्सी एप्लिकेशन
  2. प्रॉक्सी अनुरोध
  3. प्रॉक्सी त्रुटि है से त्रुटि प्राप्त होगी

इस मामले में उपयोगकर्ता ब्राउज़र में ऐप यूआरएल चलाएगा और पहले त्रुटि मिलेगी और ब्राउज़र को रीफ्रेश करते समय कुछ सेकंड बाद ऐप ठीक चला जाएगा। कोई सुझाव इस मुद्दे को हल करने के लिए कैसे करें?

मैं और अगर बाद 10 सेकंड वहाँ कुछ एपीआई जो proxyRes स्थिति की जांच के निर्माण के बारे में सोचा (जैसे कि यह हर 1 सेकंड कॉल और यदि प्रतिक्रिया 200 है देख सकते हैं और तरह से पहले त्रुटि नहीं भेज "समय समाप्ति के साथ यह जाँच" त्रुटि भेजने के लिए शायद प्रतिक्रिया नहीं है, लेकिन यह सुनिश्चित नहीं है कि यह कैसे करें और यदि इसका अच्छा दृष्टिकोण ... कोई विचार? या शायद वेब सोकेट के माध्यम से, लेकिन यह सुनिश्चित न करें कि यह कैसे करें ...

यह ओपन सोर्स है मैं https://github.com/nodejitsu/node-http-proxy

+0

मुझे नहीं लगता कि नोड प्रॉक्सी के बाद से यह केवल प्रतियां अनुरोध को लक्षित करने के और पाइप परिणाम वापस प्राप्त कर सकते हैं। और यदि लक्ष्य से कोई प्रतिक्रिया नहीं है। यह वास्तव में http स्थिति या अपरिवर्तनीय कोड वापस भेजता है। इस मामले में आपको अपना खुद का प्रॉक्सी फ़ंक्शन बनाना होगा जो अनुरोध को तब तक दोहराएगा जब तक कि 200 या 30 एक्स जैसे सही स्थिति कोड प्राप्त न हो जाए। आशा है कि ये आपकी मदद करेगा। – risyasin

+0

@risyasin - धन्यवाद लेकिन इसे बदलने में बहुत देर हो चुकी है :(, कोई अन्य विचार मैं इसे जेएस कोड/घटनाओं के साथ कैसे दोहरा सकता हूं? –

+0

यदि उपयोगकर्ता एक वेब ब्राउज़र का उपयोग करने जा रहा है, जब प्रॉक्सी विफल हो जाती है तो आप एचटीएमएल प्रतिक्रिया दे सकते हैं और "लोडिंग" के एक सुंदर एनिमेटेड जीआईएफ के साथ क्लाइंट साइड जावास्क्रिट और प्रत्येक 1 या 2 सेकंड में आपके सर्वर के लिए कुछ असुरक्षित अनुरोध। क्लाइंट में एक काउंटर डालें और क्लाइंट साइड स्क्रिप्ट को एक रिरर दिखाएं जब आपको लगता है कि रीट्री बहुत अधिक हैं। – jlvaquero

उत्तर

1

विकल्पों में proxyTimeout सेट करने का प्रयास करें। यह ध्वज दस्तावेज नहीं है लेकिन इसका उपयोग वें में किया जाता है ई कोड:

https://github.com/nodejitsu/node-http-proxy/blob/master/lib/http-proxy/passes/web-incoming.js#L119

var proxy = httpProxy.createProxyServer({proxyTimeout:3000}) // timeout 3 seconds 
संबंधित मुद्दे