Jag vet inte vad du har för design, men du kan prenumerera med en redis-klient på flera kanaler (efter att du prenumererat på klienten kan du bara prenumerera på en annan kanal eller avregistrera dig inom denna anslutning:http://redis.io/commands /prenumerera), för efter att du fått meddelandet har du fullständig information från vilken kanal detta meddelande kommer från. Sedan kan du distribuera detta meddelande till alla intresserade kunder.
Detta hjälpte mig lite, eftersom jag kunde sätta typ av meddelande i kanalnamn och sedan dynamiskt välja åtgärd för varje meddelande från liten funktion, istället för att generera separat prenumeration för varje kanal med separat logik.
Inuti min node.js-server har jag bara 2 redis-klienter:
- enkel klient för alla standardåtgärder -
lpush
,sadd
och så vidare - prenumerationsklient – som lyssnar efter meddelanden över prenumererade kanaler, sedan distribueras dessa meddelanden till alla sessioner (lagrade som uppsättningar för varje kanaltyp) med hjälp av första redis-klienten.