首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MQTT -监听ping、disconnect和connect事件

MQTT -监听ping、disconnect和connect事件
EN

Stack Overflow用户
提问于 2018-07-30 12:49:55
回答 1查看 2.1K关注 0票数 2

我有“服务器端”mqtt客户端,我用它来监视和管理远程mqtt客户端。我想扩展这个服务器模块,以保持对远程客户端的连接性的监视。

在正常运行期间,远程客户端根据代理日志定期PING代理:

代码语言:javascript
复制
1532924170: Received PINGREQ from c51
1532924170: Sending PINGRESP to c51

当连接断开时,代理日志也会显示这一点:

代码语言:javascript
复制
1532924976: Client c51 has exceeded timeout, disconnecting.
1532924976: Socket error on client c51, disconnecting.

以及随后的重新连接:

代码语言:javascript
复制
1532924978: New client connected from X.X.X.X as c51 (c1, k30).
1532924978: Sending CONNACK to c51 (0, 0)

我想从服务器模块持有的mqtt-client监视这3个事件。这个是可能的吗?如果不是,你能推荐什么替代的“健康”监控方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 14:51:07

不能,您无法从已连接的客户端读取这些内容。

唯一纯粹的MQTT方法是利用Last Will and Testament (Last Will and Testament,LWT)特性。您让客户端设置LWT,将保留的消息发布到客户端特定的主题,该主题将其标记为脱机。然后,当客户端连接时,它应该发布一条保留的消息,以显示您在线。如果您干净地断开连接(不是由keep alive time out触发的,您应该手动发布LWT消息作为断开连接前的最后一件事)。

还值得指出的是,只有在保持活动期间客户端和代理之间没有发送其他消息时,才会发送ping消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51587122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档