दिसंबर 2017 तक तेजी से आगे बढ़ रहे हैं , वेबसोकेट हर ब्राउज़र द्वारा (व्यावहारिक रूप से) समर्थित हैं और उनका उपयोग बहुत आम है।
हालांकि, इसका मतलब यह नहीं है कि वेबसोकेट AJAX को बदलने में कामयाब रहे, कम से कम पूरी तरह से नहीं, खासकर HTTP / 2 अनुकूलन बढ़ रहा है।
संक्षिप्त उत्तर यह है कि AJAX अभी भी अधिकांश REST अनुप्रयोगों के लिए बहुत अच्छा है, यहां तक कि Websockets का उपयोग करते समय भी। लेकिन भगवान विवरण में है, इसलिए ...:
मतदान के लिए AJAX
मतदान के लिए AJAX का उपयोग (या लंबे समय तक मतदान) मर रहा है (और यह होना चाहिए), लेकिन यह अभी भी दो अच्छे कारणों (मुख्य रूप से छोटे वेब ऐप के लिए) के उपयोग में बना हुआ है:
कई डेवलपर्स के लिए, AJAX कोड करना आसान है, खासकर जब यह बैकएंड को कोडिंग और डिज़ाइन करने की बात आती है।
HTTP / 2 के साथ, AJAX (एक नए कनेक्शन की स्थापना) से संबंधित उच्चतम लागत को समाप्त कर दिया गया, जिससे AJAX को विशेष रूप से डेटा पोस्ट करने और अपलोड करने के लिए काफी प्रदर्शन करने की अनुमति मिली।
हालाँकि, Websocket पुश AJAX से बहुत बेहतर है (हेडर को फिर से प्रमाणित करने या पुन: प्रमाणित करने की आवश्यकता नहीं है, "नो डेटा" राउंडट्रिप्स आदि की कोई आवश्यकता नहीं है)। इस पर कई बार चर्चा हुई ।
अजाक्स फॉर रेस्ट?
AJAX के लिए एक बेहतर उपयोग अन्य एपीआई कॉल है। यह उपयोग कोड आधार को सरल करता है और वेबसोकेट कनेक्शन को अवरुद्ध होने से रोकता है (विशेषकर मध्यम आकार के डेटा अपलोड पर)।
AJAX को कॉल और डेटा अपलोड के लिए AJAX पसंद करने के लिए कई सम्मोहक कारण हैं :
AJAX API को व्यावहारिक रूप से REST API कॉल के लिए डिज़ाइन किया गया था और यह एक बेहतरीन फिट है।
AJAX का उपयोग करके कॉल और अपलोड को क्लाइंट और बैकएंड दोनों पर कोड करना काफी आसान है।
जब तक डेटा पेलोड बढ़ता है, तब तक वेबसोकेट कनेक्शन अवरुद्ध हो सकते हैं जब तक कि संदेश विखंडन / मल्टीप्लेक्सिंग तर्क कोडित न हो।
यदि किसी एकल वेबसोकेट send
कॉल में कोई अपलोड किया जाता है , तो अपलोड समाप्त होने तक यह वेबसोकेट स्ट्रीम को ब्लॉक कर सकता है। यह प्रदर्शन को कम करेगा, खासकर धीमी ग्राहकों पर।
एक सामान्य डिज़ाइन वेबसोकेट पर हस्तांतरित छोटे बीड़ी संदेशों का उपयोग करता है जबकि वेबस्टॉक को अवरुद्ध होने से रोकने के लिए आरईएएक्स और सर्वर पर अपलोड (क्लाइंट से सर्वर) लीवर का उपयोग आसानी से करता है।
हालाँकि, बड़ी परियोजनाओं पर, Websockets द्वारा पेश लचीलापन और कोड जटिलता और संसाधन प्रबंधन के बीच संतुलन Websockets के पक्ष में शेष राशि को टिप देगा।
उदाहरण के लिए, वेबसॉकेट आधारित अपलोड एक कनेक्शन को गिराए जाने और फिर से स्थापित होने के बाद बड़े अपलोड को फिर से शुरू करने की क्षमता प्रदान कर सकता है (याद रखें कि 5 जीबी की फिल्म जिसे आप अपलोड करना चाहते थे?)।
अपलोड विखंडन तर्क को कोड करके, एक बाधित अपलोड को फिर से शुरू करना आसान है (कठिन भाग चीज को कोड कर रहा था)।
HTTP / 2 पुश के बारे में क्या?
मुझे संभवतः जोड़ना चाहिए कि HTTP / 2 पुश फीचर वेबसोकेट को प्रतिस्थापित नहीं करता (और शायद नहीं कर सकता)।
इससे पहले यहां चर्चा की गई थी , लेकिन यह उल्लेख करने के लिए पर्याप्त है कि एक एकल HTTP / 2 कनेक्शन पूरे ब्राउज़र (सभी टैब / विंडो) परोसता है, इसलिए HTTP / 2 द्वारा धक्का दिए जा रहे डेटा को यह पता नहीं है कि यह किस टैब / विंडो से संबंधित है, वेबसैट को सीधे किसी विशिष्ट ब्राउज़र टैब / विंडो में धकेलने की क्षमता को बदलने की क्षमता को समाप्त करना।
जबकि Websockets छोटे द्वि-दिशात्मक डेटा संचार के लिए महान हैं, AJAX ने अभी भी कई फायदे उठाए हैं - खासकर जब बड़े पेलोड (अपलोड आदि) पर विचार कर रहे हैं।
और सुरक्षा?
खैर, आम तौर पर, एक प्रोग्रामर को जितना अधिक विश्वास और नियंत्रण की पेशकश की जाती है, उतना ही शक्तिशाली उपकरण ... और अधिक सुरक्षा चिंताएं जो रेंगती हैं।
AJAX का स्वभाव ऊपरी हाथ होगा, क्योंकि यह सुरक्षा ब्राउज़र के कोड में बनाया गया है (जो कभी-कभी संदिग्ध होता है, लेकिन यह अभी भी है)।
दूसरी ओर, AJAX कॉल "मैन इन द मिडल" हमलों के लिए अतिसंवेदनशील होते हैं, जबकि वेबसोकेट्स सुरक्षा समस्याएं आमतौर पर एप्लिकेशन कोड में बग होती हैं, जो सुरक्षा दोष पेश करती हैं (आमतौर पर बैकेंड प्रमाणीकरण तर्क है कि आप इन्हें कहां पाएंगे)।
व्यक्तिगत रूप से मुझे यह नहीं लगता कि यह अंतर से बड़ा है, अगर मुझे लगता है कि वेबसोकेट थोड़ा बेहतर है, खासकर जब आप जानते हैं कि आप क्या कर रहे हैं।
मेरी विनम्र राय
IMHO, मैं सब कुछ के लिए Websockets का उपयोग करेगा लेकिन REST API कॉल। बिग डेटा अपलोड मैं संभव के रूप में टुकड़े और Websockets पर भेज देंगे।
पोलिंग, IMHO, को गैरकानूनी घोषित किया जाना चाहिए, नेटवर्क ट्रैफ़िक में लागत भयानक है और नए डेवलपर्स के लिए भी वेबसोकेट पुश प्रबंधन के लिए पर्याप्त आसान है।