WebSockets निश्चित रूप से भविष्य है।
AJAX करता है - जब प्रत्येक अनुरोध के लिए कनेक्शन बनाने से रोकने के लिए लॉन्ग पोलिंग एक गंदा वर्कअराउंड है, लेकिन वेबसॉफ़्ट के मौजूद न होने पर लंबी पोलिंग बनाई गई। अब WebSockets के कारण, लंबा मतदान समाप्त हो रहा है।
WebRTC सहकर्मी से सहकर्मी संचार के लिए अनुमति देता है।
मैं WebSockets सीखने की सलाह देता हूं ।
तुलना:
वेब पर विभिन्न संचार तकनीकों के
AJAX - request
→ response
। सर्वर से कनेक्शन बनाता है, वैकल्पिक डेटा के साथ अनुरोध हेडर भेजता है, सर्वर से प्रतिक्रिया प्राप्त करता है, और कनेक्शन को बंद कर देता है।
सभी प्रमुख ब्राउज़रों में समर्थित है।
लांग चुनाव - request
→ wait
→ response
। AJAX करता है जैसे सर्वर के लिए एक कनेक्शन बनाता है, लेकिन कुछ समय (हालांकि लंबे समय तक नहीं) के लिए एक खुला-जीवित कनेक्शन बनाए रखता है। कनेक्शन के दौरान, ओपन क्लाइंट सर्वर से डेटा प्राप्त कर सकता है। टाइमआउट या डेटा ईओएफ के कारण, कनेक्शन बंद होने के बाद क्लाइंट को समय-समय पर पुन: कनेक्ट करना पड़ता है। सर्वर की ओर से इसे अभी भी एक HTTP अनुरोध के समान माना जाता है, AJAX के समान, अनुरोध पर जवाब को छोड़कर अभी या भविष्य में कुछ समय होगा, आवेदन तर्क द्वारा परिभाषित किया गया है।
समर्थन चार्ट (पूर्ण) | विकिपीडिया
WebSockets - client
↔ server
। सर्वर से एक टीसीपी कनेक्शन बनाएं, और इसे आवश्यकतानुसार खुला रखें। सर्वर या क्लाइंट आसानी से कनेक्शन बंद कर सकते हैं। क्लाइंट HTTP संगत हैंडशेक प्रक्रिया से गुजरता है। यदि यह सफल होता है, तो सर्वर और क्लाइंट किसी भी समय दोनों दिशाओं में डेटा का आदान-प्रदान कर सकते हैं। यदि एप्लिकेशन को दोनों तरीकों से लगातार डेटा विनिमय की आवश्यकता होती है तो यह कुशल है। WebSockets में डेटा फ़्रेमिंग है जिसमें क्लाइंट से सर्वर पर भेजे गए प्रत्येक संदेश के लिए मास्किंग शामिल है, इसलिए डेटा को बस एन्क्रिप्ट किया गया है।
समर्थन चार्ट (बहुत अच्छा) | विकिपीडिया
WebRTC - peer
↔ peer
। ग्राहकों के बीच संचार स्थापित करने के लिए परिवहन और परिवहन-अज्ञेयवादी है, इसलिए यह यूडीपी, टीसीपी या यहां तक कि अधिक सार परतों का उपयोग कर सकता है। यह आमतौर पर उच्च मात्रा डेटा ट्रांसफर के लिए उपयोग किया जाता है, जैसे कि वीडियो / ऑडियो स्ट्रीमिंग, जहां विश्वसनीयता माध्यमिक है और कुछ फ्रेम या गुणवत्ता में कमी से प्रतिक्रिया समय के पक्ष में बलिदान किया जा सकता है और, कम से कम, कुछ डेटा ट्रांसफर। दोनों पक्ष (सहकर्मी) डेटा को स्वतंत्र रूप से एक दूसरे को धक्का दे सकते हैं। हालांकि इसे किसी भी केंद्रीकृत सर्वर से पूरी तरह से स्वतंत्र रूप से उपयोग किया जा सकता है, फिर भी इसे एंडपॉइंट डेटा का आदान-प्रदान करने के कुछ तरीके की आवश्यकता होती है, जहां ज्यादातर मामलों में डेवलपर्स अभी भी केंद्रीकृत सर्वर का उपयोग "लिंक" करने के लिए करते हैं। यह केवल कनेक्शन स्थापित करने के लिए आवश्यक डेटा का आदान-प्रदान करने के लिए आवश्यक है, जिसके बाद एक केंद्रीकृत सर्वर की आवश्यकता नहीं है।
समर्थन चार्ट (मध्यम) | विकिपीडिया
सर्वर-प्रेषित ईवेंट - client
← server
। क्लाइंट सर्वर के लिए लगातार और दीर्घकालिक कनेक्शन स्थापित करता है। केवल सर्वर ही क्लाइंट को डेटा भेज सकता है। यदि क्लाइंट सर्वर को डेटा भेजना चाहता है, तो उसे ऐसा करने के लिए किसी अन्य तकनीक / प्रोटोकॉल के उपयोग की आवश्यकता होगी। यह प्रोटोकॉल ज्यादातर सर्वर-साइड प्लेटफॉर्म में HTTP संगत और सरल है। यह लॉन्ग पोलिंग के बजाय प्रयोग किया जाने वाला एक बेहतर प्रोटोकॉल है। समर्थन चार्ट (अच्छा, IE को छोड़कर) | विकिपीडिया
लाभ:
WebSockets सर्वर-साइड का मुख्य लाभ यह है कि यह एक HTTP अनुरोध (हैंडशेक के बाद) नहीं है, बल्कि एक उचित संदेश संचार संचार प्रोटोकॉल है। यह आपको विशाल प्रदर्शन और वास्तुकला लाभ प्राप्त करने में सक्षम बनाता है । उदाहरण के लिए, नोड.जेएस में, आप अलग-अलग सॉकेट कनेक्शन के लिए एक ही मेमोरी साझा कर सकते हैं, इसलिए वे प्रत्येक साझा किए गए चर का उपयोग कर सकते हैं। इसलिए, आपको बीच में विनिमय बिंदु के रूप में डेटाबेस का उपयोग करने की आवश्यकता नहीं है (जैसे PHP जैसी भाषा के साथ AJAX या लांग पोलिंग)। आप रैम में डेटा स्टोर कर सकते हैं, या सीधे सॉकेट्स के बीच पुनर्प्रकाशित भी कर सकते हैं।
सुरक्षा के विचार
लोग अक्सर वेबस्केट्स की सुरक्षा को लेकर चिंतित रहते हैं। वास्तविकता यह है कि इससे बहुत कम फर्क पड़ता है या यहां तक कि बेहतर विकल्प के रूप में वेबसॉकेट्स भी डालते हैं। सबसे पहले, AJAX के साथ, MITM की अधिक संभावना है , क्योंकि प्रत्येक अनुरोध एक नया टीसीपी कनेक्शन है जो इंटरनेट बुनियादी ढांचे के माध्यम से ट्रैवर्सिंग कर रहा है। WebSockets के साथ, एक बार कनेक्ट होने के बाद यह बीच में अवरोधन करने के लिए अधिक चुनौतीपूर्ण होता है, इसके अलावा जब ग्राहक से सर्वर के साथ-साथ अतिरिक्त संपीड़न में स्ट्रीम किया जाता है, तो डेटा की जांच के लिए अधिक प्रयास की आवश्यकता होती है। सभी आधुनिक प्रोटोकॉल दोनों का समर्थन करते हैं: HTTP और HTTPS (एन्क्रिप्टेड)।
पुनश्च
याद रखें कि आमतौर पर WebSockets के पास नेटवर्किंग के लिए तर्क का एक बहुत ही अलग तरीका है , जैसे कि वास्तविक समय के खेल में यह सब होता है, और http की तरह नहीं।