mqtt 可变长头部

  • windows 客户端 mqttfx
  • 测试代码使用java
  • mqtt lib库使用的是 Paho
  • 浅析测试遗嘱和clean flags

Clean session flag

  • 位置 bit 1(八个无符号,index 1的位置)
  • 值:0 或者1
0: 表示订阅的客户端短线了,要为它保持推送的消息,若它重新连接时, 需要将这些消息推送(若客户端长时间不连接,需要设置一个过期时间)
1: 断线服务器立即清除相关信息,重新连接上来,需要再次订阅

Java paho代码

MemoryPersistence persistence = new MemoryPersistence();

try {
    sampleClient = new MqttClient("tcp://192.168.0.208:1883", "jiazqClientId",
            persistence);
    MqttConnectOptions connOpts = new MqttConnectOptions();
    connOpts.setCleanSession(false);
    sampleClient.connect(connOpts);
    System.out.println("--------连接成功-------");

} catch (MqttException e) {
}

注意事项:

  • 主动调用 disconnect后,Mqttt会及时清除客户端信息,不会缓存其相应消息
  • 用于接收消息

will flag

定义客户端没有主动发送disconnect 出现网络异常导致连接中断的情况下,服务器需要做成的措施;客户端需要连接时候预先设定好,自己带异常断开情况下,所留下最后的遗嘱(Last will); 就是预先定义好的主题和对应消息. 这些副加到可变头部,在发成异常情况下,有服务器代发此消息 。

java paho 代码

MemoryPersistence persistence = new MemoryPersistence();

try {
    sampleClient = new MqttClient("tcp://192.168.0.208:1883", "jiazqClientId3",
            persistence);
    MqttConnectOptions connOpts = new MqttConnectOptions();
    connOpts.setCleanSession(false);
    connOpts.setWill("jiazq/test123", "我掉线了".getBytes(), 1, false);
    //connOpts.setConnectionTimeout(60);
    sampleClient.connect(connOpts);
    System.out.println("--------连接成功-------");

} catch (MqttException e) {
}

will Qos

前提 will flag设置为1 才有效. 代表消息质量,含义同Qos

will retain

前提will flag 设置为1 才有效,代表是否持久化消息,含义同retain

注意

  • mqtt clientId是命名必须唯一的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值