दिलचस्प पोस्ट
गिट में ईविल विलीन हो जाता है? एसक्यूएल सर्वर प्रबंधन स्टूडियो के इतिहास से "सर्वर नाम" आइटम कैसे निकालें क्या grep केवल शब्द खोज पैटर्न से मेल खाते हैं? सी ++ विरासत और फ़ंक्शन ओवरराइडिंग वेबफॉर्म्स UnobtrusiveValidationMode को 'jquery' के लिए एक ScriptResourceMapping की आवश्यकता है कृपया एक जेपीआरआरससोर्समैपिंग जेक्जरी (केस-संवेदी) नाम दें मैं Django में एक DateTimeField की तारीख को कैसे फ़िल्टर कर सकता हूँ? अपाचे 2.4 + PHP- एफपीएम और प्राधिकरण शीर्षलेख आईओएस 8: बंडल मार्ग परिवर्तन पायथन और पीआईपी, उपलब्ध पैकेज के सभी संस्करणों की सूची है? onclick = "location.href = 'link.html'" पृष्ठ सफारी में लोड नहीं करता है Win32 एपीआई में पॉज़िक्स पॉपेन () के बराबर क्या है? सी प्रोग्राम बिना समाप्त किए एक कोर डंप कैसे बना सकता है? विंडो बनाम पेज बनाम UserControl WPF नेविगेशन के लिए? अजगर में टूटी हुई पाइप (एसआईजीपीईपी) को कैसे संभालना है? ब्लैकबेरी में XML निर्माण के लिए बेहतर तरीका

socket.io कमरे या नाम स्थान?

मैं वास्तविक समय चैट के लिए nodejs / socket.io की जांच कर रहा हूं, और मुझे कमरों को कार्यान्वित करने के लिए कुछ सलाह चाहिए

कौन सा बेहतर है, नाम स्थान का उपयोग करना या कमरे की सुविधा का उपयोग करने के लिए एक-दूसरे से बातें करने वालों की पूरी तरह से अलग जगह है?

कमरों और नेमस्पेस के बीच असली तकनीकी अंतर क्या है?

क्या कोई संसाधन उपयोग अंतर है?

Solutions Collecting From Web of "socket.io कमरे या नाम स्थान?"

यह नाम स्थान और कमरों में समान है (socket.io v0.9.8 – कृपया ध्यान दें कि v1.0 पूर्ण पुन: लिखना शामिल है, इसलिए चीजें बदल सकती हैं):

  • दोनों नाम स्थान ( io.of ('/ nsp') ) और कमरे ( socket.join ('room') ) सर्वर साइड पर बनाए जाते हैं
  • कई नामस्थान और एकाधिक कमरे समान (वेबसॉकेट) कनेक्शन साझा करते हैं
  • सर्वर केवल उन क्लाइंट पर संदेशों को संचारित करेगा जो एक एनएसपी / कमरे से जुड़े / जुड़े हुए हैं, यानी यह सिर्फ क्लाइंट साइड फ़िल्टरिंग नहीं है

अंतर :

  • नामस्थान io.connect(urlAndNsp) का उपयोग कर ग्राहक द्वारा जुड़ा हुआ है (क्लाइंट उस नेमस्पेस में जोड़ दिया जाएगा, io.connect(urlAndNsp) ही वह पहले से ही सर्वर पर मौजूद हो)
  • कमरों को केवल सर्वर साइड पर शामिल किया जा सकता है (यद्यपि क्लाइंट को शामिल करने में सक्षम बनाने के लिए सर्वर पक्ष पर एपीआई बनाना सीधा है)
  • नाम स्थान प्राधिकरण संरक्षित किया जा सकता है
  • प्राधिकरण कमरे के साथ उपलब्ध नहीं है , लेकिन सर्वर पर पूर्वनिर्धारित, आसान-बनाने वाली एपीआई में कस्टम प्राधिकरण को जोड़ा जा सकता है, अगर कोई कमरे का उपयोग करने पर आना चाहता है
  • कमरे नाम स्थान का हिस्सा हैं ('वैश्विक' नाम स्थान पर चूक)
  • नामस्थान हमेशा वैश्विक दायरे में निहित हैं

अवधारणा को नाम (कमरे या नाम स्थान) के साथ भ्रमित करने के लिए, मैं अवधारणा को संदर्भित करने के लिए कम्पार्टमेंट का उपयोग करता हूं, और अवधारणा के कार्यान्वयन के लिए अन्य दो नाम तो फिर आप

  • प्रति-डिब्बे प्राधिकरण की आवश्यकता है, नामस्थानों को लेने के लिए सबसे आसान मार्ग हो सकता है
  • यदि आप चाहते हैं कि पदानुक्रमित स्तरित डिब्बों (अधिकतम 2 परतें), एक नेमस्पेस / कमरे कॉम्बो का उपयोग करें
  • अगर आपके क्लाइंट-साइड ऐप में अलग-अलग हिस्सों के होते हैं (खुद को डिब्बों के बारे में ध्यान नहीं रखते हैं) लेकिन एक दूसरे से अलग होने की जरूरत है, नामस्थान का उपयोग करें

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

वास्तव में यह बेंचमार्क नहीं होने पर, मुझे लगता है कि आपको अलग-अलग और समूह संदेश के लिए अपने प्रोजेक्ट में सरल डिब्बों की आवश्यकता है, या तो एक ठीक है।

निश्चित नहीं है कि यदि आपके प्रश्न का उत्तर देता है, लेकिन इस उत्तर के ऊपर आने वाले अनुसंधान ने कम से कम मुझे स्पष्ट रूप से देखने में मदद की

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

यह निर्भर करता है कि आप क्या करना चाहते हैं

मुख्य अंतर यह है कि कमरे को लागू करने के लिए कठिन हैं प्रत्येक पृष्ठ पुनः लोड के साथ कमरों में शामिल होने के लिए आपको एक विधि बनाना होगा।

नेमस्पेस के साथ आपको बस var example = io.connect('http://localhost/example'); लिखने की जरूरत है var example = io.connect('http://localhost/example'); अपने जावास्क्रिप्ट ग्राहक और क्लाइंट में स्वचालित रूप से नामस्थानों में जोड़ दिया जाता है।

उपयोग का उदाहरण:

  • कमरे: निजी चैट
  • नामस्थान: पृष्ठ का चैट