Не знам какъв е вашият дизайн, но можете да се абонирате с един клиент на redis на множество канали (след като се абонирате с клиент, тогава можете да се абонирате само за друг канал или да се отпишете в рамките на тази връзка:http://redis.io/commands /абонирайте се), защото след като получите съобщение, имате пълна информация от кой канал идва това съобщение. След това можете да разпространите това съобщение до всички заинтересовани клиенти.
Това малко ми помогна, защото можех да поставя тип съобщение в името на канала и след това динамично да избирам действие за всяко съобщение от малка функция, вместо да генерирам отделен абонамент за всеки канал с отделна логика.
Вътре в моя сървър node.js имам само 2 Redis клиента:
- прост клиент за всички стандартни действия -
lpush
,sadd
и така нататък - абонаментен клиент – който изслушва съобщения през абонирани канали, след което тези съобщения се разпространяват до всички сесии (съхранени като набори за всеки тип канал) с помощта на първия клиент на redis.