Ik weet niet wat je ontwerp is, maar je kunt je abonneren met één redis-client op meerdere kanalen (nadat je je hebt geabonneerd bij de klant, dan kun je je alleen abonneren op een ander kanaal of je afmelden binnen deze verbinding:http://redis.io/commands /subscribe), want nadat je een bericht hebt ontvangen, heb je volledige informatie van welk kanaal dit bericht afkomstig is. Dan kun je dit bericht verspreiden onder alle geïnteresseerde klanten.
Dit hielp me een beetje, omdat ik het type bericht in de kanaalnaam kon zetten en vervolgens dynamisch actie kon kiezen voor elk bericht van een kleine functie, in plaats van een apart abonnement voor elk kanaal te genereren met aparte logica.
Binnen mijn node.js-server heb ik slechts 2 redis-clients:
- eenvoudige client voor alle standaardacties -
lpush
,sadd
enzovoort - client abonneren - die luistert naar berichten via geabonneerde kanalen, waarna deze berichten worden gedistribueerd naar alle sessies (opgeslagen als sets voor elk kanaaltype) met behulp van de eerste redis-client.