2011-02-04 9 views
98

Socket.IO सबसे लोकप्रिय और सक्रिय वेबसॉकेट अनुकरण पुस्तकालय प्रतीत होता है। Juggernaut एक पूर्ण पब/उप प्रणाली बनाने के लिए इसका उपयोग करता है।फेय बनाम सॉकेट.आईओ (और जुगर्नॉट)

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

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

बस मामले में, जुगर्नॉट को बहिष्कृत कर दिया गया है! पढ़ें क्यों http://blog.alexmaccaw.com/killing-a-library। – Maziyar

+0

एचटीएमएल 5 सर्वर-प्रेषित घटनाएं जुगर्नॉट लेखक – Harindaka

उत्तर

117

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

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

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

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

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

मुझे आशा है कि यह सहायक रहा है।

+1

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

+4

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

3

फेय निश्चित रूप से कर सकता था। Socket.IO की चोटी पर एक ऐसी ही परियोजना का एक और उदाहरण:

https://github.com/aaronblohowiak/Push-It

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

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

+0

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

संबंधित मुद्दे