Mqtt入门之请求连接信息Connect
可变头部
Connect消息的可变头部分为4部分:
- 协议名称Protocol Name;
- 协议版本Protocol Level;
- 连接标识Connect Flags;
- 空闲连接保持时间Keep Alive;
连接标识如下图所示:
Netty实现类MqttConnectVariableHeader如下图所示:
消息体
Connect消息的消息体包含的字段:客户端唯一标识(必填)、用户名、密码、WillTopic和WillMessage。可选字段是否需要填写,取决于标识位Flag。
连接行为参数
清理会话Clean Session
功能:是否清理会话
如果需要清理会话,则每次建立连接时开启新的会话,会话和连接持续相同时间。
会话存储内容如下图所示:
遗嘱标志Will Flag
功能:是否启用遗嘱消息功能;
当启用遗嘱消息功能时,服务端先存储遗嘱消息,当服务端认为连接异常时,即可发布遗嘱消息,主要是以下几种情况:
同时连接标志的WillQos和WillRetain,消息体的WillTopic和WillMessage必须被设置;当遗嘱消息被发布或者收到客户端发送的断连消息DISCONNECT时,遗嘱消息被删除。
遗嘱Qos Will Qos
功能:遗嘱消息的Qos;
遗嘱保留 Will Retain
功能:遗嘱消息被发布时是否需要被保留;
空闲连接保持时间Keep Alive
功能:连接允许的最大空闲时间,超过该时间服务端断开连接;
客户端可以通过发送心跳报文PINGREQ来保持连接,如果合理时间内没收到心跳响应报文PINGRESP,则客户端应该断开连接。