फेय बनाम सॉकेट.आईओ (और जुगेरनॉट)


102

सॉकेट.आईओ सबसे लोकप्रिय और सक्रिय वेबसोकेट इम्यूलेशन लाइब्रेरी लगती है। Juggernaut इसका उपयोग पूर्ण पब / उप प्रणाली बनाने के लिए करता है।

फेय भी लोकप्रिय और सक्रिय है, और इसकी अपनी स्वयं की जावास्क्रिप्ट लाइब्रेरी है, जो इसकी पूर्ण कार्यक्षमता को जगरनॉट के बराबर बनाती है। Juggernaut अपने सर्वर के लिए नोड का उपयोग करता है, और Faye नोड या रैक का उपयोग कर सकता है। बाजीगरी दृढ़ता के लिए रेडिस का उपयोग करता है ( सुधार: यह पब / उप के लिए रेडिस का उपयोग करता है), और फेय केवल स्मृति में राज्य रखता है।

  1. क्या सब कुछ सही है?
  2. फेय का कहना है कि यह Bayeux को लागू करता है - मुझे लगता है कि Juggernaut ऐसा नहीं करता है - ऐसा इसलिए है क्योंकि Juggernaut निचले स्तर पर है (IE, मैं Juggernaut का उपयोग करके Bayeux को लागू कर सकता हूं)
  3. Faye Socket.IO ब्राउज़र जावास्क्रिप्ट लाइब्रेरी का उपयोग करने के लिए स्विच कर सकता है अगर यह करना चाहता था? या उनके जावास्क्रिप्ट पुस्तकालयों मौलिक रूप से अलग चीजें करते हैं?
  4. क्या परियोजनाओं के बीच कोई अन्य वास्तु / डिजाइन / दर्शन अंतर हैं?

3
बस मामले में, Juggernaut को हटा दिया गया है! पढ़ें क्यों blog.alexmaccaw.com/killing-a-library
माज़ियार

जवाबों:


121

प्रकटीकरण: मैं फेय का लेखक हूं।

  1. फेय के बारे में, आपने जो कुछ भी कहा है वह सच है।
  2. Faye सबसे अधिक Bayeux को लागू करता है, एकमात्र चीज़ जो अभी गायब है वह है सेवा चैनल, जिसे मैंने अभी तक उपयोगी नहीं माना है। विशेष रूप से फेय को बायक्मे के कॉमेटडी संदर्भ कार्यान्वयन के साथ संगत करने के लिए डिज़ाइन किया गया है, जिसका निम्नलिखित पर एक बड़ा असर है।
  3. वैचारिक रूप से, हाँ: Faye सॉकेट का उपयोग कर सकता है । व्यवहार में, इसके कुछ अवरोध हैं:
    • मुझे पता नहीं है कि सॉकेट.आईओ को किस तरह के सर्वर-साइड समर्थन की आवश्यकता है, और आवश्यकता है कि फेय क्लाइंट (नोड और रूबी में सर्वर-साइड क्लाइंट हैं, याद रखें) किसी भी बायोकैम सर्वर (और फेय) से बात करने में सक्षम हो किसी भी Bayeux ग्राहक के लिए सर्वर) डील-ब्रेकर हो सकता है।
    • Bayeux की विशिष्ट आवश्यकताएं हैं जो सर्वर और क्लाइंट कुछ परिवहन प्रकारों का समर्थन करते हैं, और कहते हैं कि कैसे बातचीत करना है जो एक का उपयोग करना है। यह यह भी निर्दिष्ट करता है कि उनका उपयोग कैसे किया जाता है, उदाहरण के लिए एक XHR अनुरोध का कंटेंट-प्रकार कैसे प्रभावित करता है कि इसकी सामग्री की व्याख्या कैसे की जाती है।
    • कुछ प्रकार की त्रुटि से निपटने के लिए मुझे परिवहन के लिए सीधी पहुंच की आवश्यकता होती है, उदाहरण के लिए संदेशों का पुनरुत्पादन जब एक ग्राहक एक नोड वेबस्केट के बाद फिर से जुड़ता है
    • कृपया मुझे सही करें अगर मुझे इसमें से कोई गलत मिला है - यह सॉकेट.आईओ प्रलेखन के सरसरी स्कैन पर आधारित है।
  4. फेय सिर्फ पब / उप है, यह सिर्फ थोड़े अधिक जटिल प्रोटोकॉल पर आधारित है और इसमें निर्मित बहुत सारी बारीकियां हैं:
    • सर्वर- और क्लाइंट-साइड एक्सटेंशन
    • चैनल मार्गों पर वाइल्डकार्ड पैटर्न-मिलान
    • स्वचालित पुन: संयोजन, उदाहरण के लिए जब WebSockets मर जाते हैं या सर्वर ऑफ़लाइन हो जाता है
    • ग्राहक सभी ब्राउज़रों में, फोन पर और सर्वर-साइड पर नोड और रूबी में काम करता है

Faye शायद Juggernaut की तुलना में बहुत अधिक जटिल दिखता है क्योंकि Juggernaut अधिक प्रतिनिधि देता है, उदाहरण के लिए, यह Socket.IO को परिवहन वार्ता और Redis को संदेश रूटिंग को सौंपता है। ये दोनों ठीक निर्णय हैं, लेकिन बायकैम का उपयोग करने के मेरे फैसले का मतलब है कि मुझे खुद अधिक काम करना होगा।

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

सर्वर की तरफ इसे और अधिक लचीला बनाने के लिए काम चल रहा है। मैं क्लस्टरिंग समर्थन जोड़ने और कोर पब-सब इंजन को प्लग-योग्य बनाने पर विचार कर रहा हूं ताकि आप फेय को रेडिस या एएमक्यूपी जैसे किसी अन्य पब-उप सिस्टम के लिए एक स्टेटलेस वेब फ्रंटेंड के रूप में उपयोग कर सकें।

मुझे उम्मीद है कि यह मददगार रहा होगा।


1
एक महान जवाब के लिए धन्यवाद। मुझे बियॉक्स प्रोटोकॉल के लचीलेपन का एहसास नहीं हुआ - इसलिए एक मनमाना ग्राहक को मनमाने ढंग से / कई सर्वरों से बात करने में सक्षम होना चाहिए? क्या आप ऐसी किसी भी परियोजना या उत्पादन सेवाओं के बारे में जानते हैं जो इसका पूरा लाभ उठाती हैं?
जॉन बाकिर

4
मैं हाल ही में सॉकेट.आईओ से फेय में चला गया, और मुझे कहना होगा कि फेय ने मेरे आवेदन को बचा लिया। एक साधारण फेय सर्वर और एक मीडियम सर्वर के साथ, मेरा एप्लिकेशन 6000 उपयोगकर्ताओं को गूगल एनालिटिक्स के अनुसार एक साथ संभाल सकता है
टैन गुयेन

13
  1. AFAIK, हां, इस तथ्य के अलावा कि जुगोरनॉट केवल पबिसूब के लिए रेडिस का उपयोग करता है, दृढ़ता नहीं। इसका मतलब यह है कि ज्यादातर भाषाओं में क्लाइंट लाइब्रेरी पहले ही लिखी जा चुकी हैं (क्योंकि इसमें सिर्फ रेडिस एडॉप्टर की जरूरत होती है)।
  2. Juggernaut Bayeux को लागू नहीं करता है, बल्कि एक बहुत ही सरल कस्टम JSON प्रोटोकॉल है
  3. दुनो, शायद
  4. बाजीगरी बहुत सरल है, और इस तरह से बनाया गया है। हालाँकि मैंने Faye का उपयोग नहीं किया है, लेकिन डॉक्स से ऐसा लगता है कि इसमें PubSub की तुलना में बहुत अधिक विशेषताएं हैं। सॉकेट के शीर्ष पर बनाया जा रहा है। यह भी फायदे हैं, व्यावहारिक रूप से हर ब्राउज़र, डेस्कटॉप और मोबाइल दोनों में जुग्गोरनॉट का समर्थन है।

मुझे वास्तव में दिलचस्पी होगी कि फेय के लेखक का क्या कहना है। जैसा कि मैंने कहा, मैंने इसका उपयोग नहीं किया है और यह जानना बहुत अच्छा होगा कि यह किस तरह से जुगोरनोट से तुलना करता है। यह शायद नौकरी के लिए सबसे अच्छा उपकरण का उपयोग करने का मामला है। यदि यह आपकी जरूरत है, जुगसर्नोट बहुत अच्छी तरह से करता है।


एक महान जवाब के लिए धन्यवाद। मुझे यह महसूस नहीं हुआ कि रेडिस का उपयोग केवल इसके पब / उप विशेषताओं के लिए किया गया था। मुझसे यह पूछें: stackoverflow.com/questions/4938520
जॉन बाचिर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.