Saltar al contenido

Obtenga una lista de ID de clientes conectados del cliente MQTT

Solución:

una forma de implementar esto es dejar que el cliente publique un mensaje con el tema “status / client-id” y la carga útil “1” cada vez que se conecta al corredor, y con la carga útil “0” cuando se desconecta.

Luego, en el lado del servidor (corredor), configure otro cliente, suscríbase al tema “estado / #”, cuando reciba un mensaje como este, almacene la identificación del cliente y la carga útil (conectada o no) en la base de datos.

luego puede leer la base de datos para saber exactamente qué cliente está conectado o desconectado.

método I: manejar en la lógica del cliente

como dice @ user1048839, use el cliente LWT & publicar mensajes en línea, mantener el estado del cliente en un tema personalizado. subíndice este tema y mantenga la lista de clientes.

si pub retain msg, una vez sub obtendrá la lista de clientes.

método II: cambiar el código del corredor mosquitto

el código oficial no es compatible con online_list,
así que parcheé mosquitto 1.5.4, agregué 2 temas de sistema personalizados:

1. lista en línea

mosquitto_sub -i DDD -v -t '$SYS/broker/chen_list'
$SYS/broker/chen_list
0 - CLOUD0_19108
1 - EEE
2 - DDD

2. evento en línea / fuera de línea

mosquitto_sub -i DDD -v -t '$SYS/broker/chen_state/#'
$SYS/broker/chen_state/DDD 1
$SYS/broker/chen_state/EEE 1
$SYS/broker/chen_state/CLOUD0_19108 1
$SYS/broker/chen_state/EEE 0
$SYS/broker/chen_state/EEE 1

// si pub retain msg, sub este tema puede obtener el estado en línea de todos los clientes (en carga útil).

probar el código fuente en github:

4-lista-en-línea

5-evento-online

No.

Sería mejor discutir esto en la lista de correo de mosquitto: https://launchpad.net/~mqtt-users

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *