html5 - वेबसाकेट बनाम सर्वर-प्रेषित घटनाओं/घटना स्रोत




websocket server-sent-events (5)

WebSockets और सर्वर-प्रेषित दोनों घटनाएं ब्राउज़र को डेटा को धक्का देने में सक्षम हैं। मेरे लिए वे प्रतिस्पर्धी प्रौद्योगिकियां प्रतीत होते हैं। उनके बीच क्या अंतर है? आप एक दूसरे पर कब चुनेंगे?


वेबसाइट्स वीएस एसएसई

वेब सॉकेट - यह एक प्रोटोकॉल है जो एक एकल टीसीपी कनेक्शन पर एक पूर्ण-डुप्लेक्स संचार चैनल प्रदान करता है। उदाहरण के लिए सर्वर और ब्राउज़र के बीच दो-तरफा संचार प्रोटोकॉल अधिक जटिल है, सर्वर और ब्राउज़र को websocket की लाइब्रेरी पर भरोसा करना है जो socket.io

Example - Online chat application.

एसएसई (सर्वर-प्रेषित घटना) - सर्वर भेजे जाने के मामले में संचार सर्वर से ब्राउज़र तक ही किया जाता है और ब्राउज़र सर्वर पर कोई डेटा नहीं भेज सकता है। इस प्रकार का संचार मुख्य रूप से उपयोग किया जाता है जब आवश्यकता केवल अद्यतन डेटा दिखाने के लिए होती है, तो सर्वर जब भी डेटा अपडेट हो जाता है तो संदेश भेजता है। उदाहरण के लिए सर्वर से ब्राउज़र के बीच एक तरफा संचार। यह प्रोटोकॉल कम जटिल है, इसलिए बाहरी पुस्तकालय पर भरोसा करने की कोई आवश्यकता नहीं है JAVASCRIPT सर्वर भेजे गए संदेशों को प्राप्त करने के लिए EventSource इंटरफ़ेस प्रदान करता है।

Example - Online stock quotes or cricket score website.

Caniuse.com के अनुसार:

आप कई अन्य ब्राउज़रों को एसएसई के समर्थन को बढ़ाने के लिए क्लाइंट-केवल पॉलीफिल का उपयोग कर सकते हैं। यह WebSockets के साथ कम संभावना है। कुछ इवेंटसोर्स पॉलीफिल:

  • रेमी शार्प द्वारा EventSource कोई अन्य लाइब्रेरी निर्भरता (आई 7 +) के साथ
  • रिक। वाल्ड्रॉन द्वारा jQuery.EventSource
  • EventSource द्वारा Yaffle (मूल कार्यान्वयन की जगह, ब्राउज़रों में व्यवहार सामान्यीकृत)

यदि आपको सभी ब्राउज़रों का समर्थन करने की आवश्यकता है, तो web-socket-js , SignalR या socket.io जैसी लाइब्रेरी का उपयोग करने पर विचार करें जो socket.io , SignalR , SignalR फ्रेम और एजेक्स लांग पोलिंग जैसे कई ट्रांसपोर्ट का समर्थन करते हैं। इन्हें अक्सर सर्वर पक्ष में संशोधन की आवश्यकता होती है।

एसएसई के बारे में और जानें:

वेबसाकेट्स के बारे में और जानें:

अन्य अंतर:

  • वेबसाकेट मनमाने ढंग से बाइनरी डेटा का समर्थन करता है, एसएसई केवल यूटीएफ -8 का उपयोग करता है

ओपेरा, क्रोम, सफारी एसएसई का समर्थन करता है, क्रोम, सफारी शेयरवेयर वर्कर फ़ायरफ़ॉक्स के अंदर एसएसई का समर्थन करता है XMLHttpRequest readyState इंटरएक्टिव का समर्थन करता है, इसलिए हम फ़ायरफ़ॉक्स के लिए EventSource polyfil बना सकते हैं


ध्यान देने योग्य एक बात:
मुझे websockets और कॉर्पोरेट फ़ायरवॉल के साथ समस्याएं थीं। (HTTPS का उपयोग करने में मदद करता है लेकिन हमेशा नहीं।)

https://github.com/LearnBoost/socket.io/wiki/Socket.IO-and-firewall-software https://github.com/sockjs/sockjs-client/issues/94 देखें

मुझे लगता है कि सर्वर-प्रेषित घटनाओं के साथ कई मुद्दे नहीं हैं। लेकिन मुझे नहीं पता।

उस ने कहा, वेबसाकेट बहुत मजेदार हैं। मेरे पास एक छोटा सा वेब गेम है जो websockets (सॉकेट.आईओ के माध्यम से) का उपयोग करता है ( http://minibman.com )


Here वेब सॉकेट और सर्वर भेजे गए ईवेंट के बीच अंतर के बारे में एक बात है। चूंकि जावा ईई 7 WebSocket एपीआई पहले ही विनिर्देश का हिस्सा है और ऐसा लगता है कि सर्वर भेजे गए ईवेंट एंटरप्राइज़ संस्करण के next संस्करण में रिलीज़ किए जाएंगे।





server-sent-events