Will Message (遗嘱信息)
Will 消息需要被服务器保存在服务器端,和当前网络连接关联。
Will 消息必须在后续网络连接断开之后被分发出去(Publish), 除非服务器收到了来自客户端的 Disconnect 包。
发布 Will信息的情形包括但不限于:
- 服务器检测到客户端连接中断或者 I/O 错误。
- 客户端没有按照约定的 Keep-Alive 时间发送 Ping 消息。
- 客户断开了网络连接,但是没有发送 DISCONNECT 消息。
- 服务器端应为协议错误关闭了客户端的网络连接
当客户端主动的通过发送 DISCONNECT 断开了网络连接的情况下, Will 消息是不应该被服务器分发给订阅者的。
如下情况下 Will 消息需要从 Session 中移除;
- 在服务器分发了 Will 消息之后
- 服务器收到了来自客户端的 DISCONNECT 消息
在需要的时候,服务器端应该尽快的分发 Will 消息。当时如果在发送之前或者发送中,服务器出错,可以将 Will 消息的发送时机延迟到服务器重启之后。
Will QoS
Will 消息的 QoS 值可以是: 0, 1,2.
Will Retain
参考 PUBLISH RETAIN 章节。