2009-01-04 20 views
17

हाल ही में एक साक्षात्कार में मुझसे पूछा गया कि मैं ऑनलाइन चैट क्लाइंट एप्लिकेशन से कैसे संपर्क करूंगा। मैं मानक "मतदान" समाधान के माध्यम से चला गया लेकिन कट ऑफ कर दिया गया क्योंकि साक्षात्कारकर्ता "HTTP 1.1 रख-रखाव" विधि की तलाश में था। थोड़ी देर के लिए HTTP का उपयोग करने और याद रखना कि पूरा बिंदु "स्टेटलेस" होना था, यह मेरे लिए कभी नहीं हुआ (यह भी उल्लेख नहीं करना चाहिए कि जीवित रहने को लगातार लागू नहीं किया जाता है)।क्लाइंट के लिए संवाद करने के लिए सर्वर के लिए HTTP Keep-Alive का उपयोग करें

मेरा सवाल यह है कि क्या वेब सर्वर के लिए "रख-रखाव" हेडर सेट होने पर किसी क्लाइंट को प्रसारण और/या जानकारी भेजना संभव है?

उत्तर

8

HTTP 1.1 के साथ, जीवित रहना डिफ़ॉल्ट व्यवहार है। (HTTP 1.0 में, डिफ़ॉल्ट व्यवहार कनेक्शन को बंद करना था।) सर्वर को पहली प्रतिक्रिया के साथ कनेक्शन को समाप्त करने के लिए 'कनेक्शन: क्लोज़ "हेडर भेजना होगा। इसलिए डेटा को धक्का देने के लिए अभी भी एक टीसीपी सॉकेट उपलब्ध है, लेकिन बस सर्वर से डेटा को धक्का देना एक बड़े पैमाने पर HTTP प्रोटोकॉल का उल्लंघन करेगा। यहां तक ​​कि जीवित रहने का उपयोग करने के लिए, क्लाइंट को अभी भी सर्वर को मतदान करना होगा।

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

व्हील पुन: मतदान करने की आवश्यकता को खत्म करने के लिए 'लंबे मतदान' कर रहे हैं, टीसीपी रखरखाव की आवश्यकता हो सकती है।

5

आप Comet सर्वर के बारे में अधिक पढ़ सकते हैं। यह मूल रूप से उस दृष्टिकोण की तरह लगता है जो साक्षात्कारकर्ता पूछ रहा था। उनकी प्रभावशीलता कुछ लोगों द्वारा विवादित है, लेकिन इसका उपयोग कई समान स्थितियों में किया गया है।

उदाहरण के लिए, मेरा मानना ​​है कि जीमेल कुछ चीजों के लिए धूमकेतु प्रौद्योगिकियों का उपयोग करता है (लेकिन मुझे इस पर उद्धरण न दें)।

प्रासंगिक उदाहरण लगता है कि एक और उदाहरण BOSH है, जो HTTP और XMPP का उपयोग कर चैट जानकारी संचारित करने के लिए एक प्रोटोकॉल है। लेकिन मुझे विश्वास नहीं है कि जीवित रहने का उपयोग उसमें शामिल है।

9

रखें-जिंदा बस एक टीसीपी सॉकेट खोलता है, इसलिए हर बार जब आप मतदान करते हैं, तो आप टीसीपी सेटअप/टियरडाउन पैकेट के ओवरहेड को बचाते हैं - लेकिन आपको अभी भी मतदान करना होगा।

हालांकि, "लंबे मतदान" वेब सर्वर के लिए सूचनाओं को प्रसारित करने की रणनीति है। अनिवार्य रूप से, ग्राहक एक जीईटी अनुरोध जारी करता है, लेकिन तुरंत जवाब देने के बजाय, वेब सर्वर तब तक प्रतीक्षा करता है जब तक उन्हें भेजने की अधिसूचना न हो, जिस बिंदु पर वे जीईटी अनुरोध का जवाब देते हैं। यह मतदान उद्देश्यों के लिए तारों पर जाने के लिए पैकेट की किसी भी आवश्यकता को समाप्त करता है, और कनेक्शन को स्टेटलेस रखता है, जैसा कि आप सही तरीके से उल्लेख करते हैं प्रोटोकॉल के उद्देश्यों में से एक है।

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

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