Nie wiem, jaki masz projekt, ale możesz subskrybować jednym klientem redis na wielu kanałach (po subskrybowaniu z klientem możesz tylko subskrybować inny kanał lub zrezygnować z subskrypcji w ramach tego połączenia:http://redis.io/commands /subskrybuj), ponieważ po otrzymaniu wiadomości masz pełną informację z jakiego kanału pochodzi ta wiadomość. Następnie możesz przekazać tę wiadomość wszystkim zainteresowanym klientom.
Trochę mi to pomogło, ponieważ mogłem umieścić typ wiadomości w nazwie kanału, a następnie dynamicznie wybrać akcję dla każdej wiadomości z małej funkcji, zamiast generować osobną subskrypcję dla każdego kanału z odrębną logiką.
Wewnątrz mojego serwera node.js mam tylko 2 klientów redis:
- prosty klient do wszystkich standardowych działań -
lpush
,sadd
i tak dalej - Klient subskrypcji - który nasłuchuje wiadomości na subskrybowanych kanałach, a następnie wiadomości te są dystrybuowane do wszystkich sesji (przechowywane jako zestawy dla każdego typu kanału) przy użyciu pierwszego klienta redis.