会话状态
为实现QoS等级1和QoS等级2协议流,客户端和服务端需要将状态与客户标识符相关联,这被称为会 话状态。服务端还将订阅信息存储为会话状态的一部分。会话可以跨越一系列的网络连接。它持续到最新的网络连接(Network Connections)加上会话过期间隔 (Session Expiry Interval)。
客户端的会话状态包括:
- 已发送给服务端,但是还没有完成确认的QoS等级1和QoS等级2的消息。
- 从服务端收到的,但是还没有完成确认的QoS等级2消息。
服务端的会话状态包括:
- 会话是否存在,即使会话状态其余部分为空。
- 客户端订阅信息,包括任何订阅标识符。
- 已发送给客户端,但是还没有完成确认的QoS等级1和QoS等级2的消息。
- 等待传输给客户端的QoS等级0(可选),QoS等级1和QoS等级2的消息。
- 从客户端收到的,但是还没有完成确认的QoS等级2消息。遗嘱消息和遗嘱延时间隔。
- 如果会话当前未连接,会话结束时间和会话状态将被丢弃。
保留消息不是会话状态的一部分,会话结束时不被删除。
存储会话状态
当网络连接打开时,客户端和服务端不能丢弃会话状态。当网络连接被关闭并且会话过期 间隔已过时,服务端必须丢弃会话状态
网络连接
MQTT v5.0使用的传输层协议是 [RFC0793] 定义的TCP/IP协议。下面的协议也支持:
- TLS [RFC5246]
- WebSocket [RFC6455]