MQTT断线重连订阅无法接收
工具
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断线重连订阅无法接收相关推荐
- esp8266 防掉线方法_ESP8266 MQTT断线重连问题
MQTT进行publish的时候好像比较容易出现问题,这样改似乎有改善,仅供参考. ESP8266_RTOS_SDK/third_party/mqtt/library/MQTTClient.c ESP ...
- springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程
一.Redis 集群概述 Redis 主从复制 到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然 ...
- 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接
以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...
- Android Socket连接(模拟心跳包,断线重连,发送数据等)
首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 喻志强的博客 耐心 细心 用心 传播正能量 RSS订阅 原 A ...
- Android 通过 NSD 服务 Netty(断线重连、心跳、黏包处理) 实现两个 Android 系统端的长连接通讯
引言 近期需求,通过手机App端取号机(含叫号通知功能),实时连接 另一台 Android 广告机用于播放当前被叫到的号数. 这里有两种Android 机 一台「基于Sunmi版的可出小票的Andro ...
- 长连接、心跳和断线重连
长连接.心跳和断线重连 2017年06月22日 18:38:53 天涯遍地是小草 阅读数 7938 一.概述 目前IM软件有一个基本的功能就是长在线,即只要有网络就保持登录,然而,网络状态是无法预测的 ...
- Netty客户端断线重连实现及问题思考
点击关注公众号,利用碎片时间学习 前言 在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? ...
- 浅析 Netty 实现心跳机制与断线重连
基础 何为心跳 顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 为什么需要心跳 因为网络的不可 ...
- springboot redis 断线重连_Redis复制:部分同步PSYNC详解
概述 在Redis2.8之前,如果从服务器在主从复制的过程中,出现了断线,重连之后需要全量同步一次主服务器上面的数据,即从服务器发送SYNC命令给主服务器,请求进行全量同步,但是断线重连之后,从服务器 ...
最新文章
- c# list 求交使用注意点
- ES6入门概览二--数组
- Qt只QStringList的简单使用方法
- hashmap底层原理_Java集合 - HashMap原理(一) 概念和底层架构
- Linux驱动编程 step-by-step (六) 用户地址检测 简单模块调试 以及一些杂项
- linux网络收包过程
- 嵌入式软件工程师笔试题
- Python min() 方法
- java .jpackage_jpackage安装Java原生本机应用的新工具
- NLPIR 汉语分词系统 (PyNLPIR) 学习手札
- 黑苹果alc269声卡仿冒id_ALC269声卡仿冒驱动的制作问题,请紫米、威廉等高手指导一下。...
- POJO, VO什么的是个什么鬼?
- uniapp开发APP/小程序 微信一键登陆
- Spring AOP配置 之 @Aspect
- 单点登录-CAS介绍
- 活动预告:BetaEX线上春季发布会 | TokenInsight
- Web基础与apache讲解与搭建
- CentOS7系统下Java环境和tomcat的安装
- 2019年度技术总结
- 创建物料凭证 BAPI_GOODSMVT_CREATE