MQTT: Keep Alive

Keep Alive

时间单位是 秒。

字段长度为 2 个字节的 short。

这个值规定了客户端从发送上一个控制包之后,到发送下一个控制包之间最大的时间间隔。

客户端需要确保发送控制包的时间间隔不超过这个值。 如果在此时间间隔内,没有其他的控制包需要发送给服务器端,客户端可以发送 PINGREQ 包。

客户端可以在任何时刻发送 PINGREQ(不受 Keep Alive 值的限制)。 通过发送 PINGREQ 可以检测服务器端是否正常工作或者当前网络状态是否可用。

如果 Keep Alive 的值不为零,但是在1.5倍的约定时间间隔后,服务器没有收到来自客户端的控制包(包括 PINGREQ), 服务器端应该关闭与客户端的网络连接,并且把它当作一个网络错误。

如果客户端发送了 PINGREQ 消息,但是在一定时间之后,没有收到来自服务器端的 PINGRESP 消息,客户端应该关闭当前网络连接。

如果 Keep Alive 的值是 0,意味着不使用 Keep Alive 机制。意味着服务器不需要在客户端在一段时间没有活动之后关闭连接。 但是,服务器也可以选择关闭网络连接在一定时间之后,这是被协议所允许的。

你可能感兴趣的:(#,MQTT,网络协议,网络,iot)