2015-06-24 11 views
12

मेरे पास सर्वर की ओर PHP है, और क्लाइंट पक्ष पर HTML और जावास्क्रिप्ट है।पुश अधिसूचना | websocket अनिवार्य है?

मैं एक ऐप्स बनाने रहा जहां एक हितधारक प्रकार संदेश है कि वास्तविक समय में एक समूह के कई रिसीवर को प्रसारित कर रहा है।

मैं गूगल पर कुछ शोध किया और मैं समझता हूँ कि मैं वास्तविक समय पुश नोटिफिकेशन के लिए WebSockets या धूमकेतु का उपयोग करने की जरूरत है। उपयोगकर्ताओं को जन अधिसूचनाएं भेजने के लिए वेबसाकेट या धूमकेतु अनिवार्य है?

क्या मेरी समझ सही है? शुरू करने के लिए कोई संदर्भ?

उत्तर

25

ग्राहक एक ब्राउज़र है, तो केवल दो तरीके एक मानक ब्राउज़र एक सर्वर से कनेक्ट कर सकते हैं एक अजाक्स (जैसे http) अनुरोध या एक WebSocket कनेक्शन के माध्यम से है। इसलिए, यदि आप चाहते हैं कि किसी ग्राहक को बाहरी दुनिया से कुछ अधिसूचित किया जाए तो उसे उन दो तंत्रों में से एक का उपयोग करना होगा।

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

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

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

तो, यदि आप किसी ब्राउज़र पर "रीयलटाइम सर्वर पुश" करने का प्रयास कर रहे हैं, तो आपके पास क्लाइंट से निरंतर कनेक्ट सॉकेट होना चाहिए जिसका अर्थ वेबस्केट (या सॉकेट.ओओ की तरह वेबसाईट के शीर्ष पर बनाया गया कुछ) है।

जहां फोन एसडीके के लिए उपयोग किया फोन ऐप्लिकेशन के लिए आपको ग्राहक के लिए सर्वर से कुछ संदेश पुश करने के लिए "पुश" प्रणाली OS में निर्मित उपयोग कर सकते हैं। यह दो तरह से वेबसॉकेट चैनल जैसा नहीं है, लेकिन चूंकि आपने "पुश नोटिफिकेशन" के बारे में पूछा है, इसलिए एंड्रॉइड और आईओएस दोनों में उपलब्ध ओएस पुश सेवाएं भी सर्वर से क्लाइंट को अधिसूचनाओं को धक्का देने का विकल्प हो सकती हैं। यहाँ की जानकारी पर iOS notifications और Google Cloud Messaging

2016 के रूप में, एक भी Server-sent events माइक्रोसॉफ्ट ब्राउज़र को छोड़कर सभी आधुनिक ब्राउज़रों (एज या IE में अभी तक समर्थित नहीं) में उपयोग ग्राहक के लिए सर्वर से डेटा पुश करने के लिए कर सकते हैं। यहां एक browser compatibility table है। सर्वर से भेजे गए ईवेंट किसी भी समय सर्वर से क्लाइंट को ईवेंट भेजने में सक्षम होने के लिए एक लंबे समय तक चलने वाले HTTP कनेक्शन, एक विशेष MIME प्रकार और एक सहायक क्लाइंट का उपयोग करते हैं। वेबसाकेट के विपरीत, सर्वर से भेजे गए ईवेंट केवल एक ही तरीके से हैं (सर्वर से क्लाइंट तक)। एक क्लाइंट एक सर्वर पर डेटा भेजने में सक्षम होने के लिए पारंपरिक अजाक्स कॉल का उपयोग करेगा (जबकि वेबसाकेट डेटा के साथ उसी वेबसेट कनेक्शन पर किसी भी तरह से भेजा जा सकता है)।How do server-sent events actually work?

+0

क्या आप फोन क्षुधा में धक्का प्रणाली के साथ मतलब है:

यहाँ कैसे सर्वर भेजा घटनाओं काम का अच्छा वर्णन है? सूचनाएं भेजना? यह websockets से अलग व्यवहार करता है ... – Ixx

+0

@Ixx - एंड्रॉइड और आईओएस दोनों में ओएस में निर्मित पुश सेवा है। यहां [आईओएस अधिसूचनाएं] (https://developer.apple.com/notifications/) और [Google क्लाउड मैसेजिंग] (https://developers.google.com/cloud-messaging/) पर जानकारी दी गई है। ये स्पष्ट रूप से वेबसाकेट्स के समान नहीं हैं (न ही वे बनने का इरादा रखते हैं), लेकिन यदि आप सर्वर से किसी मोबाइल फोन पर कभी-कभी अपडेट भेजना चाहते हैं, तो ऐसा करने का यह सबसे प्रभावी तरीका हो सकता है। – jfriend00

+0

हां मुझे पता है कि यह स्पष्ट था कि इसका उपयोग वेबसाइकिलों के लिए नहीं किया जा सकता है जैसा कि ऐसा लगता है। – Ixx

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