websocket क्या हम HTTP/2 का उपयोग करते समय वेब पोर्टल पर SSE+REST पसंद करना चाहिए?




server-sent-events http2 (3)

2 मल्टीप्लेक्ड एचटीटीपी / 2 टीसीपी कनेक्शन में 2 धाराओं का उपयोग करना (सर्वर से ग्राहक संचार के लिए एक स्ट्रीम - सर्वर भेजे गए इवेंट्स (एसएसई), और क्लाइंट-टू-सर्वर संचार और सामान्य एचटीटीपी संचार के लिए एक स्ट्रीम) 2 टीसीपी कनेक्शन का उपयोग करना एक सामान्य HTTP संचार के लिए और एक WebSocket के लिए) तुलना करने के लिए आसान नहीं है।

संभवतः माइलेज एप्लिकेशन के आधार पर भिन्न होगा।

ओवरहेड? ठीक है, निश्चित रूप से कनेक्शन की संख्या में दुगुना होता है। हालांकि, वेबसॉकेट संदेश को संपीड़ित कर सकता है, जबकि एसएसई नहीं कर सकता।

लचीलापन? यदि कनेक्शन अलग होते हैं, तो वे विभिन्न एन्क्रिप्शन का उपयोग कर सकते हैं HTTP / 2 को विशेष रूप से बहुत मजबूत एन्क्रिप्शन की आवश्यकता होती है, जो प्रदर्शन को सीमित कर सकती है। दूसरी ओर, WebSocket को TLS की आवश्यकता नहीं होती है

मोबाइल नेटवर्क में स्पष्ट-पाठ WebSocket काम करता है? मेरे अनुभव में, यह निर्भर करता है एंटीवायरस, एप्लिकेशन फ़ायरवॉल्स, मोबाइल ऑपरेटर वेबसॉकेट ट्रैफिक को सीमित कर सकते हैं, या जिस देश पर आप काम करते हैं, उसके आधार पर इसे कम विश्वसनीय बना सकते हैं।

एपीआई उपलब्धता? वेबसाकेट एक व्यापक तैनात और मान्यता प्राप्त मानक है; उदाहरण के लिए जावा में एक आधिकारिक एपीआई ( javax.websocket ) है और दूसरा आ रहा है ( java.net.websocket )।

मुझे लगता है कि एसएसई द्विदिश वेब संचार के लिए एक तकनीकी तौर पर अवर अवर समाधान है और एक तकनीक के रूप में यह बहुत लोकप्रिय नहीं है (कोई मानक API, कोई पुस्तकें, आदि - WebSocket की तुलना में) अगर मुझे एचटीएमएल 5 से हटा दिया गया तो मुझे आश्चर्य नहीं होगा, और मुझे यह याद नहीं होगा, जेटी में इसे लागू करने में से एक होने के बावजूद, मुझे यह याद नहीं होगा।

आपकी रुचि के आधार पर, आपको अपने बेंचमार्क करना होगा या अपने विशेष मामले के लिए तकनीक का मूल्यांकन करना होगा।

Websocket का उपयोग करते समय, हमें द्विदिश संचार के लिए एक समर्पित कनेक्शन की आवश्यकता होती है। यदि हम एचटीटीपी / 2 का प्रयोग करते हैं तो हमारे पास सर्वर द्वारा बनाए गए दूसरा कनेक्शन है।

उस मामले में, websocket का उपयोग एक अनावश्यक ओवरहेड प्रतीत होता है क्योंकि एसएसई और नियमित HTTP अनुरोध के साथ हम एक एकल HTTP / 2 कनेक्शन पर द्विदिश संपर्क का लाभ प्राप्त कर सकते हैं।

तुम क्या सोचते हो?


एक वेब डेवलपर के परिप्रेक्ष्य से, वेबकॉकेट्स और एक अंतर इंटरफ़ेस के बीच अंतर सिमेंटिक है। REST एक अनुरोध / प्रतिक्रिया मॉडल का उपयोग करता है जहां सर्वर से हर संदेश क्लाइंट से संदेश का उत्तर होता है दूसरी ओर, वेबसॉकेट, दोनों सर्वर और क्लाइंट को पिछली अनुरोध के बिना किसी भी समय बिना संदेशों को पुश करने की अनुमति देते हैं।

किस तकनीक का उपयोग करना आपके आवेदन के संदर्भ में अधिक समझ में आता है पर निर्भर करता है। बेशक, आप एक तकनीक के व्यवहार को दूसरे के साथ अनुकरण करने के लिए कुछ युक्तियों का उपयोग कर सकते हैं, लेकिन आमतौर पर यह आमतौर पर अधिमानतः उपयोग करने के लिए होता है, जो आपके संचार मॉडल को बेहतर ढंग से फिट करता है, जब द-बुक द्वारा उपयोग किया जाता है

सर्वर से भेजे गए ईवेंट एक ऐसी नई तकनीक हैं जो अभी तक सभी प्रमुख ब्राउज़रों द्वारा समर्थित नहीं हैं, इसलिए यह अभी तक एक गंभीर वेब अनुप्रयोग के लिए एक विकल्प नहीं है।


यह आप किस प्रकार के आवेदन को लागू करना चाहते हैं, यह बहुत कुछ निर्भर करता है यदि आप वास्तव में सर्वर और क्लाइंट के बीच एक द्विदिश संचार की जरूरत है तो वेबसकेट अधिक उपयुक्त है, लेकिन आपको सभी संचार प्रोटोकॉल लागू करना होगा और यह सभी आईटी इन्फ्रास्ट्रक्चर्स (कुछ फ़ायरवॉल, प्रॉक्सी या लोड बैलेंसर्स वेबसाकेट का समर्थन नहीं कर सकते हैं) । इसलिए यदि आपको 100% द्विदिश लिंक की ज़रूरत नहीं है, तो मैं एसईएस के साथ अतिरिक्त जानकारी के लिए ग्राहक से सर्वर पर REST अनुरोधों का उपयोग करने की सलाह दूंगा। लेकिन दूसरी ओर, एसएसई कुछ चेतावनियों के साथ आता है, जैसे कि जावास्क्रिप्ट कार्यान्वयन के लिए, आप शीर्षलेखों को अधिलेखित नहीं कर सकते हैं। एकमात्र समाधान क्वेरी पैरामीटर को पारित करना है, लेकिन फिर आप क्वेरी स्ट्रिंग आकार की सीमा के साथ एक समस्या का सामना कर सकते हैं। इसलिए, फिर से, एसएसई और वेबसैट्स के बीच चयन करना वास्तव में आपके द्वारा कार्यान्वित करने के लिए आवश्यक आवेदन पर निर्भर करता है। कुछ महीने पहले, मैंने एक ब्लॉग पोस्ट लिखा था जो आपको कुछ जानकारी दे सकता है: http://streamdata.io/blog/push-sse-vs-websockets/ यद्यपि हम उस समय HTTP2 पर विचार नहीं करते थे, यह जानने में मदद मिल सकती है कि आपको अपने प्रश्न पूछने की क्या जरूरत है।