工具

MQTT客户端是用的 paho http://www.eclipse.org/paho/

问题

采用以下配置

        connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true);connOpts.setConnectionTimeout(10);connOpts.setKeepAliveInterval(90);connOpts.setAutomaticReconnect(true);

当网络断开后,客户端会进行重连,但是重连之前订阅的主题就失效了,不再接受之前订阅主题的消息。

解决方法

因为配置里将cleanSession 设为 true ,当客户端掉线时 ,服务器端会清除 客户端 session 。 重连后 客户端会有一个新的session。

第一种

把配置里的 cleanSession 设为false,客户端掉线后 服务器端不会清除session,当重连后可以接收之前订阅主题的消息。当客户端上线后会接受到它离线的这段时间的消息

第二种

通过查看 connect 方法的代码发现

如果我们设置的 callback实现了 MqttCallbackExtended接口,就会把它设置给connectActionListener,我再来看看MqttCallbackExtended接口。

可以看到这个接口拓展了一个方法,该方法会在连接到服务器成功时调用,正符合我们的要求。我只需要实现这个接口并在这个方法里从新订阅之前的主题就行了。

这种方法重连之后不会收到离线期间该主题的消息

MQTT断线重连订阅无法接收相关推荐

  1. esp8266 防掉线方法_ESP8266 MQTT断线重连问题

    MQTT进行publish的时候好像比较容易出现问题,这样改似乎有改善,仅供参考. ESP8266_RTOS_SDK/third_party/mqtt/library/MQTTClient.c ESP ...

  2. springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程

    一.Redis 集群概述 Redis 主从复制 到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然 ...

  3. 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接

    以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...

  4. Android Socket连接(模拟心跳包,断线重连,发送数据等)

    首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 喻志强的博客 耐心 细心 用心 传播正能量 RSS订阅 原 A ...

  5. Android 通过 NSD 服务 Netty(断线重连、心跳、黏包处理) 实现两个 Android 系统端的长连接通讯

    引言 近期需求,通过手机App端取号机(含叫号通知功能),实时连接 另一台 Android 广告机用于播放当前被叫到的号数. 这里有两种Android 机 一台「基于Sunmi版的可出小票的Andro ...

  6. 长连接、心跳和断线重连

    长连接.心跳和断线重连 2017年06月22日 18:38:53 天涯遍地是小草 阅读数 7938 一.概述 目前IM软件有一个基本的功能就是长在线,即只要有网络就保持登录,然而,网络状态是无法预测的 ...

  7. Netty客户端断线重连实现及问题思考

    点击关注公众号,利用碎片时间学习 前言 在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? ...

  8. 浅析 Netty 实现心跳机制与断线重连

    基础 何为心跳 顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 为什么需要心跳 因为网络的不可 ...

  9. springboot redis 断线重连_Redis复制:部分同步PSYNC详解

    概述 在Redis2.8之前,如果从服务器在主从复制的过程中,出现了断线,重连之后需要全量同步一次主服务器上面的数据,即从服务器发送SYNC命令给主服务器,请求进行全量同步,但是断线重连之后,从服务器 ...

最新文章

  1. c# list 求交使用注意点
  2. ES6入门概览二--数组
  3. Qt只QStringList的简单使用方法
  4. hashmap底层原理_Java集合 - HashMap原理(一) 概念和底层架构
  5. Linux驱动编程 step-by-step (六) 用户地址检测 简单模块调试 以及一些杂项
  6. linux网络收包过程
  7. 嵌入式软件工程师笔试题
  8. Python min() 方法
  9. java .jpackage_jpackage安装Java原生本机应用的新工具
  10. NLPIR 汉语分词系统 (PyNLPIR) 学习手札
  11. 黑苹果alc269声卡仿冒id_ALC269声卡仿冒驱动的制作问题,请紫米、威廉等高手指导一下。...
  12. POJO, VO什么的是个什么鬼?
  13. uniapp开发APP/小程序 微信一键登陆
  14. Spring AOP配置 之 @Aspect
  15. 单点登录-CAS介绍
  16. 活动预告:BetaEX线上春季发布会 | TokenInsight
  17. Web基础与apache讲解与搭建
  18. CentOS7系统下Java环境和tomcat的安装
  19. 2019年度技术总结
  20. 创建物料凭证 BAPI_GOODSMVT_CREATE

热门文章

  1. 马化腾对C语言的重视
  2. 10月书讯(下) | 小长假我读这些新书
  3. 12、go语言的duck typing
  4. STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置
  5. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之【05EC20模组TCP/IP模块AT指令说明】
  6. 微信小程序 之 程序题
  7. 常见浏览器清理缓存方法
  8. static inline声明
  9. 【优麒麟】22.04 LTS版本即将发布,终极预告来袭,你准备好了吗?
  10. oracle佣金高于薪金60%,oracle的SQL练习题