2009-07-28 15 views
5

मैं AJAX/COMET के आधार पर एक ऑनलाइन चैट रूम लिख रहा हूं। मेरे डिजाइन है:विभिन्न ब्राउज़रों के टाइमआउट व्यवहार?

अनुरोध

----------------- इंतजार ------------------- ------> डंप डेटा

----------------- प्रतीक्षा करें ------------------ -------> डंप डेटा भेजें

----------------- प्रतीक्षा करें ----------------- --------> डंप डेटा भेजें

----------------- प्रतीक्षा करें ---------------- ---------> डंप डेटा भेजें

----------------- प्रतीक्षा करें -------------------------> डंप डेटा भेजें

------ कुछ हुआ, प्रतिक्रिया प्राप्त करें।

एक और अनुरोध ..... ....

जैसा कि आप देख, सर्वर अनुरोध पकड़ और कुछ इंतजार हुआ, अगर वहाँ कुछ घटना हुआ, बस डेटा और खत्म अनुरोध धक्का। फिर ग्राहक एक और अनुरोध जारी करेगा। अनुरोध में टिक है, इसलिए अगर दो अनुरोधों के बीच अंतर होता है, तो सर्वर जानता है कि ग्राहक के लिए लंबित घटना है।

ब्राउज़र टाइमआउट से पहले, सर्वर टाइमआउट से क्लाइंट को रोकने के लिए कुछ निष्क्रिय डेटा भी भेजता है।

अब, समस्या आती है: विभिन्न ब्राउज़रों के टाइमआउट व्यवहार क्या हैं? मुझे पता है कि ब्राउज़र अनुरोध भेजता है और डेटा की प्रतीक्षा करता है, अगर प्रतीक्षा करने में बहुत लंबा समय लगता है, तो यह समय-समय पर होगा। लेकिन विभिन्न ब्राउज़रों के उन समय-समय पर व्यवहार क्या हैं? और क्या कोई शीर्षलेख है जो ब्राउज़र के टाइमआउट व्यवहार को नियंत्रित कर सकता है? ब्राउज़र के टाइमआउट व्यवहार को जानकर, ताकि मैं तय कर सकूं कि उनके साथ कैसे निपटें। मुझे वह डेटा कहां मिल सकता है?

+0

इस उत्तर को देखें http://stackoverflow.com/a/1343963/779408 – breceivemail

उत्तर

9

असल में, चूंकि क्लाइंट प्रॉक्सी के माध्यम से जा रहा है, इसलिए विभिन्न ब्राउज़रों के लिए टाइमआउट के स्पष्ट मूल्यों का मतलब उतना ही नहीं है जितना आप सोचेंगे।

इसके बजाय, मैं पूछूंगा कि आप क्यों पूछ रहे हैं - आपको टाइमआउट से निपटना होगा, और ब्राउज़र पर स्ट्रीमिंग की कोई भी मात्रा हर बार इसे रोकने जा रही है। इसलिए जब कनेक्शन गिरता है तो क्लाइंट से सर्वर की आवश्यकता होती है - यह एक कारण है कि बहुत से लोग लंबे मतदान की सलाह देते हैं जो आप ऐसा करने की कोशिश कर रहे हैं। भले ही आप स्ट्रीमिंग समाधान या लंबे मतदान का चयन करते हैं, आपको कनेक्शन रीसेट की अनुमति देनी होगी।

एक साधारण छिपा हुआ आईफ्रेम क्लाइंट सेटअप, it's not too hard to do - और यह क्लाइंट साइड फ्रेमवर्क के उपयोग के आधार पर एक्सएचआर अनुरोधों के लिए समान रूप से आसान है।

आईई (60 मिनट? वाह) में सबसे आधुनिक ब्राउज़रों के लिए टाइमआउट rather large लगता है, और एफएफ में छोटा (लगभग: कॉन्फ़िगर 300 सेकंड - ईक कहते हैं) - लेकिन जैसा कि मैंने कहा, यह आपको आपकी मदद नहीं करता है एक प्रॉक्सी, जहां टाइमआउट 2 मिनट या उससे कम के रूप में छोटा हो सकता है, इस पर निर्भर करता है कि प्रॉक्सी व्यवस्थापक ने इसे कैसे कॉन्फ़िगर किया है।

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

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