Eu não sei qual é o seu design, mas você pode se inscrever com um cliente redis em vários canais (depois de se inscrever com o cliente, você só pode se inscrever em outro canal ou cancelar a inscrição nesta conexão:http://redis.io/commands /subscribe), pois após receber a mensagem, você tem todas as informações de qual canal esta mensagem vem. Então você pode distribuir esta mensagem para todos os clientes interessados.
Isso me ajudou um pouco, porque eu poderia colocar o tipo de mensagem no nome do canal e, em seguida, escolher dinamicamente a ação para cada mensagem da função pequena, em vez de gerar assinatura separada para cada canal com lógica separada.
Dentro do meu servidor node.js tenho apenas 2 clientes redis:
- cliente simples para todas as ações padrão -
lpush
,sadd
e assim por diante - cliente de assinatura - que ouve as mensagens nos canais inscritos e, em seguida, essas mensagens são distribuídas para todas as sessões (armazenadas como conjuntos para cada tipo de canal) usando o primeiro cliente redis.