HTTP और TCP / IP (सर्वर-क्लाइंट) पर ऑब्जर्वर पैटर्न


9

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

समस्या यह है कि, मुझे एक सतर्क तंत्र विकसित करना चाहिए, जिसमें, जब कोई व्यक्ति खतरनाक मूल्यों के साथ एक फॉर्म जमा करता है, तो प्रबंधक (जो एक ही वेब एप्लिकेशन के माध्यम से जुड़ा हुआ है) को अपनी स्क्रीन पर अलर्ट पॉप-अप प्राप्त करना चाहिए, लगभग वास्तविक -समय (तुरन्त)।

हालाँकि, चूंकि HTTP प्रोटोकॉल स्टेटलेस है, इसलिए मैं यहाँ थोड़ा हैरान हूँ। मुझे नहीं पता कि मैं इसे कैसे लागू कर सकता हूं।

समाधानों में से एक सर्वर से प्रत्येक सेकंड में डेटा खींचने के लिए जावास्क्रिप्ट के साथ-साथ setInterval()फ़ंक्शन का उपयोग किया जा सकता है । लेकिन यह मुझे और अव्यवसायिक को थोड़ा गंदा लगता है।

क्या आप लोगों को किसी अन्य समाधान को लागू करने का कोई विचार है?



किस तरह के ग्राहक? पतले (ब्राउज़र आधारित) ग्राहक या भारी ग्राहक?
ysdx

@ysdx, ग्राहकों को लगता है। केवल ब्राउज़र समर्थन वाले ग्राहक।
सईद नेमाटी

जवाबों:


4

आपको ग्राहकों को सूचित करने के लिए किसी तरह के अजाक्स पुश ( कॉमेट देखें ) का उपयोग करना चाहिए । यह मतदान की आवश्यकता को समाप्त कर सकता है, आप मूल रूप से एक स्थापित कनेक्शन को खुला रखते हैं जिसका उपयोग ओगरिंग घटनाओं के ब्राउज़र को सूचित करने के लिए किया जा सकता है। हालाँकि, यह सभी ब्राउज़रों के साथ काम नहीं करता है। आप ऐसे मामलों में "लंबे मतदान" पर वापस आते हैं।


6

मुझे लगता है कि यह उसी तरह का कारण है जिसके लिए वेब पॉकेट बनाए गए थे। यदि आपको पुराने ब्राउज़रों के साथ संगतता की आवश्यकता नहीं है, तो आप मतदान के बजाय इसका उपयोग करना चाहते हैं। आपको मतदान का उपयोग संभवतः कमबैक के रूप में करना चाहिए।

मुझे यकीन नहीं है कि इन दिनों कल्पना / कार्यान्वयन कितना स्थिर है (यह बहुत पहले स्थिर नहीं था)। ऐसा लगता है कि नवीनतम कल्पना फ़ायरफ़ॉक्स 6 और क्रोमियम 14 में लागू की गई है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.