मुझे नहीं पता कि आपका डिज़ाइन क्या है, लेकिन आप कई चैनलों पर एक रेडिस क्लाइंट के साथ सदस्यता ले सकते हैं (क्लाइंट के साथ सदस्यता लेने के बाद, आप केवल अन्य चैनल की सदस्यता ले सकते हैं या इस कनेक्शन के भीतर सदस्यता समाप्त कर सकते हैं:http://redis.io/commands /सब्सक्राइब) करें, क्योंकि मैसेज मिलने के बाद आपके पास पूरी जानकारी होती है कि यह मैसेज किस चैनल से आया है। फिर आप इस संदेश को सभी इच्छुक ग्राहकों को वितरित कर सकते हैं।
इससे मुझे थोड़ी मदद मिली, क्योंकि मैं चैनल नाम में संदेश का प्रकार डाल सकता था और फिर अलग तर्क के साथ प्रत्येक चैनल के लिए अलग सदस्यता उत्पन्न करने के बजाय, छोटे फ़ंक्शन से प्रत्येक संदेश के लिए गतिशील रूप से कार्रवाई चुन सकता था।
मेरे नोड.जेएस सर्वर के अंदर मेरे पास केवल 2 रेडिस क्लाइंट हैं:
- सभी मानक कार्रवाइयों के लिए सरल क्लाइंट -
lpush
,sadd
और इसी तरह - सब्सक्राइब क्लाइंट - जो सब्सक्राइब किए गए चैनलों पर संदेशों को सुनता है, फिर यह संदेश पहले रेडिस क्लाइंट का उपयोग करके सभी सत्रों (प्रत्येक चैनल प्रकार के लिए सेट के रूप में संग्रहीत) में वितरित किया जाता है।