Actualmente estoy interesado en ver qué canales están suscritos a un Redis pub/sub Aplicación tengo. Cuando un cliente se conecta a nuestro servidor, que se registren a un canal que se parece a:Redis publicación/suscripción: ver qué canales están suscritos actualmente a
user:user_id
La razón de esto es que quiero ser capaz de ver quién está "en línea". Actualmente, disparo ciegamente los mensajes a un canal sin saber si un cliente está en línea, ya que no es crítico que reciban este tipo de mensajes.
En un esfuerzo por hacer que mi aplicación sea más inteligente, me gustaría poder descubrir si un cliente está en línea o no utilizando la API pub/sub, y si están desconectados, almacenar sus mensajes en caché en una cola redis separada que puedo presionarles cuando vuelven a estar en línea.
Esto no tiene por qué ser fiable al 100%, pero cuanto más precisa sea, mejor. Supongo que una clave genérica no se crea cuando se suscribe un canal, por lo que no puedo hacer algo tan trivial como:
redis-cli keys user*
para encontrar a todos los usuarios en línea.
La otra estrategia en la que he pensado es simplemente mantener mi propio Redis Set cada vez que un usuario publica o se elimina de un canal (que el cliente maneja automáticamente cuando salta en línea y cierra la aplicación). Esa sería una capa adicional de complejidad que necesito administrar y espero que haya un enfoque más trivial con los datos que ya están disponibles.
¡Gran sugerencia! Tuve la misma necesidad ahora y logré escribir sobre ello publicando 'null' en el canal para obtener la cantidad de suscriptores. Luego, en el oyente, compruebo si el mensaje es Ninguno y me lo salteo, si es así. ¡Salud! –