2014-10-21 6 views
9

इसे बाहर समय HTTP अनुरोध की बात आती है, यह Node.js तरह लग रहा है तीन अलग-अलग समय समाप्ति है:अंतर Node.js HTTP सर्वर, अनुरोध, और उत्तर टाइमआउट

  1. server.setTimeout http://nodejs.org/api/http.html#http_server_settimeout_msecs_callback
  2. अनुरोध .setTimeout http://nodejs.org/api/http.html#http_request_settimeout_timeout_callback
  3. response.setTimeout http://nodejs.org/api/http.html#http_response_settimeout_msecs_callback

किसी को भी स्पष्ट कर सकते हैं क्या फर्क इन तरीकों और क से प्रत्येक के बीच है y कोई हर किसी का उपयोग करना चाहता है?

उत्तर

13
  1. आप अपने node.js ऐप में एक वेब सर्वर चला रहे हैं। यह तय करता है कि निष्क्रिय समय सीमा के कारण इसे बंद करने से पहले कोई ट्रैफ़िक बिना क्लाइंट अनुरोध कनेक्शन को कितना समय तक छोड़ देगा। एक उदाहरण यह है कि उपयोगकर्ता आपके ऐप से बड़ी फ़ाइल डाउनलोड करते समय अपने घर में बिजली खो देता है। आप इसे एक बार सेट करते हैं और यह आपके सर्वर द्वारा प्राप्त होने वाले सभी क्लाइंट कनेक्शन पर लागू होगा।
  2. यह आपके नोड प्रोग्राम से दूरस्थ वेब सर्वर पर आउटगोइंग अनुरोधों के लिए है। तो आप फ़ाइल डाउनलोड करने के लिए एक स्क्रैपर लिखते हैं और डाउनलोड करते समय आपका इंटरनेट कनेक्शन मर जाता है। यह निर्धारित करता है कि जब नोड अंततः दूरस्थ पक्ष से डेटा की प्रतीक्षा पर छोड़ देता है। यह केवल एक विशिष्ट अनुरोध को प्रभावित करेगा क्योंकि अंतर्निहित टीसीपी कनेक्शन बंद हो जाएगा और प्रत्येक आउटगोइंग अनुरोध को एक अलग टीसीपी कनेक्शन मिलेगा।
  3. चूंकि HTTP अनुरोध और संबंधित प्रतिक्रिया उसी अंतर्निहित टीसीपी सॉकेट के माध्यम से होती है, मेरी समझ req.setTimeout और res.setTimeout अंततः उसी अंतर्निहित सिस्टम कॉल में परिणामस्वरूप होती है जो संबंधित libuv/os कॉल का उपयोग करके टीसीपी सॉकेट पर टाइमआउट सेट करती है। तो मुझे लगता है कि दोनों समकक्ष हैं और आप जो भी कर सकते हैं वह कहीं भी अधिक सुविधाजनक है या जो भी आपको सैद्धांतिक रूप से स्पष्ट महसूस करता है। मैं इसके बारे में गलत हो सकता हूं, हालांकि यदि कोई और जानता है कि निश्चित रूप से मुझे सही करने के लिए स्वतंत्र महसूस होता है।

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

+0

धन्यवाद! # 3 पर किसी अंतर्दृष्टि से प्यार होगा और यह देखने के लिए कुछ परीक्षण करेंगे कि क्या कोई अंतर है या नहीं –

संबंधित मुद्दे