Non so qual è il tuo design, ma puoi iscriverti con un client redis su più canali (dopo esserti iscritto con il client, puoi iscriverti solo ad un altro canale o annullare l'iscrizione all'interno di questa connessione:http://redis.io/commands /subscribe), perché dopo aver ricevuto il messaggio, hai tutte le informazioni sul canale da cui proviene questo messaggio. Quindi puoi distribuire questo messaggio a tutti i clienti interessati.
Questo mi ha aiutato un po', perché potevo inserire il tipo di messaggio nel nome del canale e quindi scegliere dinamicamente l'azione per ogni messaggio da una piccola funzione, invece di generare iscrizioni separate per ogni canale con una logica separata.
All'interno del mio server node.js ho solo 2 client redis:
- client semplice per tutte le azioni standard -
lpush
,sadd
e così via - client di sottoscrizione - che ascolta i messaggi sui canali a cui si è iscritti, quindi questi messaggi vengono distribuiti a tutte le sessioni (memorizzati come set per ogni tipo di canale) utilizzando il primo client redis.