遗嘱消息在客户端发起连接时指定
,它和 Client ID、Clean Start 这些字段一起包含在客户端发送的 CONNECT 报文中。
与普通消息一样,我们可以为遗嘱消息设置主题(Will Topic)、保留消息标识位(Will Retain)、属性(Will Properties)、QoS(Will QoS)和有效载荷
这些字段的用法与它们在普通消息中时完全相同,只是遗嘱消息可用的属性与普通应用消息略有不同,下表列出了它们的具体区别:
遗嘱消息只是多了一个专属属性:**Will Delay Interval**。
作用:这个属性决定了服务端将在网络连接关闭后延迟多久发布遗嘱消息,并以秒为单位。
默认情况下,服务端总是在网络连接意外关闭时立即发布遗嘱消息。但是很多时候,网络连接的中断是短暂的,所以客户端往往能够重新连接并继续之前的会话。这导致遗嘱
消息可能被频繁地且无意义地发送。
如果没有指定 Will Delay Interval 或者将其设置为 0,服务端将仍然在网络连接关闭时立即发布遗嘱消息。
但如果将 Will Delay Interval 设置为一个大于 0 的值,并且客户端能够在 Will Delay Interval 到期前恢复连接,那么该遗嘱消息将不会被发布。
遗嘱消息是会话状态的一部分,当会话结束,遗嘱消息也无法继续单独存在。但是在遗嘱消息延迟发布期间,会话可能过期,也可能因为客户端在新的连接中设置Clean
Start 为 1 所以服务端需要丢弃之前的会话。为了避免丢失遗嘱,此时服务端必须发布该遗嘱消息,即便 Will Delay Interval 还没有到期。所以服务端最终何时发
具体步骤:
mqttx_8189c0fc/status
,Payload 为 offline 的遗嘱消息,并且将 Will Delay Interval 设置为 5 秒,Session
Expiry Interval 设置为 300 秒:遗嘱消息主题使用 Client ID 作为前缀可以有效避免主题重复:
【一】.钩子文件的设置和创建(1).打开hooks目录,可以看到有一个post-commit.tmpl文件,这是一个模板文件。复制一份,重命名为post-commit,将其用户组设为www,并设置为可执行。chown www:www post-commitchmod +x post-commit(2...
git pull https://git.oschina.net/392223903/learn.git master 换为您的git地址...
1.关机Process.Start("shutdown", "-s -t 0"); 2. 注销 Proc...
private const string fantizi = "高久峰是個程序員"; private const string jiantizi = "高久峰是个程序员...
方案1.IE浏览器"无法显示此页"的解决办法(1).按下Win+R键打开运行,输入netsh winsock reset,回车;(2).重启即可. 方案2.IE浏览器"无法显示此页"的解决办法 (1).设置-连接-局域网设置-自动检测设置开...
首先网页全部是纯静态的文件,本地测试正常访问,服务器端无法加载CSS,并且无法查看CSS文件的内容。 解决方案:关闭网站的压缩->>静态压缩和动态压缩...