Gostaria de monitorar os clientes que se conectam e desconectam de um processo separado que estaria inscrevendo-se em um tópico do sistema em que as mensagens de nascimento e vontade serão postadas.
O Guia do Usuário do emqtt mostra um tópico do sistema que oferece algumas Estatísticas do Broker, ou seja, $SYS/brokers/${node}/stats/clients/count
fornece a contagem de clientes conectados atualmente. Observe que isso não listará detalhes específicos sobre os clientes conectados - por isso considero que não é necessário aqui.
As mensagens de última vontade (LWT, Última Vontade e Testamento) não são um tópico do sistema, mas um tópico regular, conforme configurado pelo cliente durante a conexão. Se você deseja monitorar esse tópico, basta se inscrever. Observe, no entanto, que as mensagens LWT são descartadas se um cliente for desconectado normalmente enviando uma mensagem DISCONNECT (consulte o blog hiveMQ , ótima leitura a pé).
O Guia do Usuário do emqtt apresenta uma maneira melhor de monitorar a conexão e desconexão de clientes:
A ./bin/emqttd_ctl
linha de comando pode ser usada para consultar e administrar o EMQ broker (não está funcionando no Windows).
Eu acho que o monitoramento clients list
- listar todos os clientes MQTT - e clients show <ClientId>
- mostrar um cliente MQTT - é mais útil aqui. O processo separado planejado para monitorar clientes, portanto, não precisa se inscrever no broker, mas simplesmente utilizar ./bin/emqttd_ctl
.
$ ./bin/emqttd_ctl clients list
Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113)
Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)