如何关闭Client到Broker的连接
本篇文章为大家展示了如何关闭Client到Broker的连接,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
我们提供的服务有:成都网站设计、成都网站建设、微信公众号开发、网站优化、网站认证、桑珠孜ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的桑珠孜网站制作公司
接下来看一下如何关闭Client 到 Broker 的连接。
Client 主动关闭连接的流程非常简单,只需要向 Broker 发送一个 DISCONNECT 数据包就可以了。DISCONNECT 数据包没有可变头(Variable header)和消息体(Payload)。在 Client 发送完 DISCONNECT 之后,就可以关闭底层的 TCP 连接了,不需要等待 Broker 的回复(Broker 也不会对 DISCONNECT 数据包回复)。
这里读者可能有一个疑问,为什么需要在关闭 TCP 连接之前,发送一个和 Broker 没有交互的 DISCONNECT 数据包,而不是直接关闭底层的 TCP 连接?
这里涉及到 MQTT 协议的一个特性,Broker 需要判断 Client 是否正常地断开连接。
当 Broker 收到 Client 的 DISCONNECT 数据包的时候,它认为 Client 是正常地断开连接,那么它会丢弃当前连接指定的遗愿消息(Will Message)。如果 Broker 检测到 Client 连接丢失,但又没有收到 DISCONNECT 消息包,它会认为 Client 是非正常断开连接,就会向在连接的时候指定的遗愿主题(Will Topic)发布遗愿消息(Will Message)
Broker 主动关闭连接
MQTT 协议规定 Broker 在没有收到 Client 的 DISCONNECT 数据包之前都应该保持和 Client 连接,只有 Broker 在 Keep Alive 的时间间隔里,没有收到 Client 的任何 MQTT 数据包的时候会主动关闭连接。一些 Broker 的实现在 MQTT 协议上做了一些拓展,支持 Client 的连接管理,可以主动地断开和某个 Client 的连接。
上述内容就是如何关闭Client到Broker的连接,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
本文名称:如何关闭Client到Broker的连接
转载来源:http://myzitong.com/article/jpshch.html