मैं एक चैट एप्लिकेशन बना रहा हूं जो सर्वर से क्लाइंट तक "पुश" अनुकरण करने के लिए लंबे मतदान के साथ काम करता है।टाइमआउट प्राप्त किए बिना ब्राउज़र की प्रतिक्रिया देने से पहले मैं कितना सुरक्षित इंतजार कर सकता हूं?
मूल रूप से, ब्राउज़र अपडेट के लिए पूछता है, और अगर कुछ नया है तो मैं जवाब देता हूं। अन्यथा, जब तक कि वापस भेजने के लिए कुछ न हो, तब तक कनेक्शन बिना प्रतिक्रिया के खुलता रहता है।
अब, अगर 30 सेकंड बीत चुके हैं और मैंने कुछ भी नहीं भेजा है, तो मैं मूल रूप से "नोन्यूज" कहकर प्रतिक्रिया भेजता हूं, और ग्राहक फिर से मतदान करेंगे।
मैं जो करना चाहता हूं वह स्पष्ट रूप से इस कनेक्शन को यथासंभव लंबे समय तक उत्तर देने के बिना रखता है, ब्राउज़र से बस समय समाप्त हो जाएगा और मुझे छोड़ देगा ... मुझे क्लाइंट टाइमआउट पर अच्छा दस्तावेज नहीं मिला है प्रत्येक ब्राउज़र के लिए है, और ऐसा लगता है कि यह उन सभी के लिए समान नहीं है ...
क्या आप में से कोई भी लंबे समय तक मतदान कर रहा है?
कोई भी विचार जो सबसे लंबा सुरक्षित टाइमआउट हो सकता है?
धन्यवाद!
दिलचस्प, मैं यह कैसे कर सकता हूं? इसके अलावा, क्या सर्वर इसका पता लगा सकता है? (एएसपी.Net 2.0) मुझे पता है कि मैं तकनीकी रूप से जांच सकता हूं कि क्लाइंट अभी भी जुड़ा हुआ है, लेकिन क्या यह 100% सटीक है? मेरी चिंता यह दौड़ की स्थिति है: क्लाइंट टाइमआउट करेगा, उपयोगकर्ता के लिए एक संदेश आएगा, सर्वर इसे उस कनेक्शन पर भेज देगा जिसके पास हैंडल है, संदेश कहीं भी नहीं जाता है क्योंकि यह ग्राहक में समय समाप्त हो गया है, क्लाइंट द्वारा किए गए नए अनुरोध में एक खाली संदेश कतार उनके लिए इंतजार कर रही है, और संदेश खो गया है ... –
सर्वर की तरफ, सॉकेट पर लिखने का प्रयास करते समय एक टाइम-आउट कनेक्शन त्रुटि उत्पन्न करेगा। निश्चित रूप से आप इसका पता लगाते हैं कि आप जिस सर्वर-साइड तकनीक का उपयोग कर रहे हैं, उस पर निर्भर करता है, और मैं एएसपी.Net से बहुत परिचित नहीं हूं। संभावना है, Response.Write (या जो कुछ भी अब है) किसी प्रकार की त्रुटि उत्पन्न करेगा। क्लाइंट-साइड, आपको कुछ अतिरिक्त काम करने की आवश्यकता होगी, मैंने कुछ जवाबों के साथ अपना उत्तर अपडेट कर लिया है जो आपको उपयोगी मिल सकती है। –
जब आप संदेश प्राप्त करते हैं तो ग्राहक क्लाइंट को एसीके भेज सकता है। इस प्रकार यदि आप एक संदेश वापस भेजते हैं और कोई पावती नहीं करते हैं, तो इसे फिर से कनेक्ट होने तक कतार में छोड़ दें। – kibibu